unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch
@ 2024-03-06 19:37 David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
                   ` (31 more replies)
  0 siblings, 32 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:37 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This patch series unbundles all dependencies of python-pytorch (updated to
version 2.2.1) and removes all* autogenerated files, completing the work by
Ludo' [1]. I also applied the unbundling to python-pytorch-for-r-torch
(version 2.0.1) and made sure that r-torch still builds.

Originally, I wanted to package PyTorch with ROCm, but decided that it would
be better to first update the package and complete the unbundling.  This was
more work than I initially thought though, so this patch series is quite long.

Caffe2 is heavily integrated in the PyTorch code, so unbundling it does
not make sense.

For QNNPACK, the situation is strange: There is an old version [2] and an
internal fork in aten/src/ATen/native/quantized/cpu/qnnpack, which PyTorch
both depends on (as well as XNNPACK). The internal fork does not depend on
other parts of the code currently, so I unbundled it as well as a package
variant of qnnpack.

ideep [3] has a separate branch for PyTorch (the master branch does not
seem maintained), which only contains header files without build
instructions. Therefore, I made a simple package with the header files.

miniz also requires a package variant for PyTorch.

Several scripts for autogenerated files depend on the compiled PyTorch
library. However, it was possible to patch the scripts with empty values
and later regenerate the files with the initial PyTorch version.
Therefore, I introduced the 'codegen2, 'build2 and 'install2 build
phases running after the initial library is installed. In 'codegen2, the
installed library is used to regenerate the files properly, which leads
to a recompilation of only 12 files in the 'build2 phase.

The core tests can be run as well, but I disabled them as they take
a long time after an already long build.

I also wanted to try and build python-pytorch on i686-linux, as it doesn't
require emulation on an x86_64 CPU, but it depends on Rust through
python-cryptography, for which there are no substitutes available currently.

Cheers,
David

* with the exception of test/cpp/api/init_baseline.h and
test/cpp/api/optim_baseline.h, which are just lists of previously
calculated numbers; or any other generated file I might have missed.

[1] https://hpc.guix.info/blog/2021/09/whats-in-a-package/
[2] https://github.com/pytorch/QNNPACK
[3] https://github.com/intel/ideep/tree/pytorch

David Elsing (31):
  gnu: asmjit: Update to commit 3ca5c18.
  gnu: Add python-typing-extensions-4.10.
  gnu: Add python-optree.
  gnu: Add python-pytest-flakefinder.
  gnu: Add python-pytest-shard.
  gnu: Add python-expecttest.
  gnu: Add python-pytest-rerunfailures-13.
  gnu: Add miniz.
  gnu: Add miniz-for-pytorch.
  gnu: Add libnop.
  gnu: Remove flatbuffers-next-shared.
  gnu: python-flatbuffers-next: Update to 23.5.26.
  gnu: pthreadpool: Update to commit 178e3e0.
  gnu: cpuinfo: Update to commit aa4b216.
  gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  gnu: nnpack: Update to commit 70a77f4.
  gnu: oneapi-dnnl: Update to 3.3.5.
  gnu: Add tensorpipe.
  gnu: Add fbgemm.
  gnu: Add qnnpack.
  gnu: Add foxi.
  gnu: Add ideep-pytorch.
  gnu: xnnpack: Update to commit 51a9875.
  gnu: Remove xnnpack-for-torch2.
  gnu: Add qnnpack-pytorch.
  gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  gnu: python-torchvision: Update to 0.17.1.
  gnu: Add ideep-pytorch-for-r-torch.
  gnu: Add oneapi-dnnl-for-r-torch.
  gnu: Add qnnpack-pytorch-for-r-torch.
  gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.

 gnu/local.mk                                  |    9 +-
 gnu/packages/compression.scm                  |   49 +
 gnu/packages/cpp.scm                          |    6 +-
 gnu/packages/machine-learning.scm             |  874 +++-
 gnu/packages/parallel.scm                     |   30 +-
 .../patches/clog-fix-shared-build.patch       |   39 +-
 .../patches/cpuinfo-system-libraries.patch    |   50 -
 .../patches/fbgemm-use-system-libraries.patch |   62 +
 gnu/packages/patches/foxi-fix-build.patch     |   55 +
 gnu/packages/patches/miniz-for-pytorch.patch  |   47 +
 .../patches/python-optree-fix-32-bit.patch    |  122 +
 ...ython-pytorch-1.9.0-system-libraries.patch |  139 -
 .../patches/python-pytorch-fix-codegen.patch  |  167 +
 ...thon-pytorch-for-r-torch-fix-codegen.patch |  167 +
 ...pytorch-for-r-torch-system-libraries.patch |  390 ++
 .../patches/python-pytorch-runpath.patch      |   19 +-
 .../python-pytorch-system-libraries.patch     |  324 +-
 .../python-pytorch-without-kineto.patch       |   60 +
 .../python-pytorch2-system-libraries.patch    |  156 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------
 .../patches/xnnpack-remove-broken-tests.patch |  335 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 gnu/packages/python-build.scm                 |   12 +
 gnu/packages/python-check.scm                 |   88 +
 gnu/packages/python-xyz.scm                   |   29 +
 gnu/packages/serialization.scm                |   53 +-
 26 files changed, 5111 insertions(+), 4964 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

-- 
2.41.0





^ permalink raw reply	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 01/31] gnu: asmjit: Update to commit 3ca5c18.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
                   ` (30 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/cpp.scm (asmjit): Update to commit 3ca5c18.
---
 gnu/packages/cpp.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 3b65ce9f4a..6f1df246cb 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -154,8 +154,8 @@ (define-public argagg
       (license license:expat))))
 
 (define-public asmjit
-  (let ((commit "4ec760a3d1f69e32ba460ecd2513f29b8428700b")
-        (revision "0"))
+  (let ((commit "3ca5c186bf8922e5fe3018432e93651fd2fa4053")
+        (revision "1"))
     (package
       (name "asmjit")
       (version (git-version "0.0.0" revision commit))
@@ -168,7 +168,7 @@ (define-public asmjit
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0skgccbpamcbg1byawfq5n6jzxgj64hnc7jznvk35nkskaaz1nlb"))))
+          (base32 "10k1zc0w8m0vnh52id9qlm1sb99qmpvr6k0ha8ag2h223n0d591g"))))
       (build-system cmake-build-system)
       (arguments
        (list #:configure-flags #~(list "-DASMJIT_TEST=TRUE")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 02/31] gnu: Add python-typing-extensions-4.10.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 03/31] gnu: Add python-optree David Elsing
                   ` (29 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-build.scm (python-typing-extensions-4.10): New variable.
---
 gnu/packages/python-build.scm | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 2ea457cdba..21e7e422f9 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -252,6 +252,18 @@ (define-public python-typing-extensions
 @end enumerate\n")
     (license license:psfl)))
 
+(define-public python-typing-extensions-4.10
+  (package
+    (inherit python-typing-extensions)
+    (version "4.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "typing_extensions" version))
+       (sha256
+        (base32
+         "1jxkj4pni8pdyrn79sq441lsp40xzw363n0qvfc6zfcgkv4dgaxh"))))))
+
 \f
 ;;;
 ;;; Python builder packages.
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 03/31] gnu: Add python-optree.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 04/31] gnu: Add python-pytest-flakefinder David Elsing
                   ` (28 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-xyz.scm (python-optree): New variable.
---
 .../patches/python-optree-fix-32-bit.patch    | 122 ++++++++++++++++++
 gnu/packages/python-xyz.scm                   |  29 +++++
 2 files changed, 151 insertions(+)
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch

diff --git a/gnu/packages/patches/python-optree-fix-32-bit.patch b/gnu/packages/patches/python-optree-fix-32-bit.patch
new file mode 100644
index 0000000000..6a32c39bd8
--- /dev/null
+++ b/gnu/packages/patches/python-optree-fix-32-bit.patch
@@ -0,0 +1,122 @@
+In include/utils.h, ssize_t is an alias for py::ssize_t, which is an alias for
+Py_ssize_t in Python, which is an alias for the system ssize_t.
+The latter is defined in glibc as int if __WORDSIZE == 32 and as long int if
+__WORDSIZE == 64.  Therefore, we need to remove the explicit template
+specialization for int in the first case.
+
+diff --git a/include/utils.h b/include/utils.h
+index 950a02b..82a9591 100644
+--- a/include/utils.h
++++ b/include/utils.h
+@@ -141,10 +141,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const size_t& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const int& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const ssize_t& item) {
+     return PyList_GET_ITEM(container.ptr(), item);
+@@ -153,10 +155,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const size_t& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const int& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_BORROW(const py::handle& container, const Item& item) {
+@@ -171,11 +175,13 @@ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_borrow<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -185,11 +191,13 @@ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const s
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_STEAL(const py::handle& container, const Item& item) {
+@@ -204,11 +212,13 @@ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const s
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_steal<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -218,11 +228,13 @@ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const si
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline void SET_ITEM(const py::handle& container, const Item& item, const py::handle& value) {
+@@ -240,12 +252,14 @@ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const int& item,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const ssize_t& item,
+@@ -258,12 +272,14 @@ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const int& item,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ 
+ template <typename PyType>
+ inline void AssertExact(const py::handle& object) {
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index fc6e997b6c..e1e68ca343 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -11635,6 +11635,35 @@ (define-public python-treelib
      "This package provides a Python implementation of a tree structure.")
     (license license:asl2.0)))
 
+(define-public python-optree
+  (package
+    (name "python-optree")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/metaopt/optree")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1q3wljk7cyl5rsam02sfsj8zjrqx4c3x9vic8j6xx13p8czpsisg"))
+       (patches (search-patches "python-optree-fix-32-bit.patch"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-typing-extensions))
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-xdist
+           cmake
+           pybind11))
+    (home-page "https://github.com/metaopt/optree")
+    (synopsis "Optimized PyTree Utilities")
+    (description "This package contains operations on PyTrees (a tree made of
+container data structures in Python).")
+    (license license:asl2.0)))
+
 (define-public python-jupyter-core
   (package
     (name "python-jupyter-core")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 04/31] gnu: Add python-pytest-flakefinder.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (2 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 03/31] gnu: Add python-optree David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 05/31] gnu: Add python-pytest-shard David Elsing
                   ` (27 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-flakefinder): New variable.
---
 gnu/packages/python-check.scm | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 51a38bbcbe..36d4025b9d 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -191,6 +191,24 @@ (define-public python-pytest-csv
 it adds to the Pytest command line interface (CLI).")
     (license license:gpl3+)))
 
+(define-public python-pytest-flakefinder
+  (package
+    (name "python-pytest-flakefinder")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flakefinder" version))
+       (sha256
+        (base32 "03iy80xlkpgzjs2kxa9rrj8dbnp9awyhpcl3hy8fgf5x40cjlhg2"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-pytest))
+    (home-page "https://github.com/dropbox/pytest-flakefinder")
+    (synopsis "Pytest plugin for finding flaky tests")
+    (description "This package provides a Pytest plugin to run tests multiple
+times and detect flakyness.")
+    (license license:asl2.0)))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 05/31] gnu: Add python-pytest-shard.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (3 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 04/31] gnu: Add python-pytest-flakefinder David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 06/31] gnu: Add python-expecttest David Elsing
                   ` (26 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-shard): New variable.
---
 gnu/packages/python-check.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 36d4025b9d..2338f32801 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -209,6 +209,30 @@ (define-public python-pytest-flakefinder
 times and detect flakyness.")
     (license license:asl2.0)))
 
+(define-public python-pytest-shard
+  (let ((commit "64610a08dac6b0511b6d51cf895d0e1040d162ad")
+        (revision "0"))
+    (package
+      (name "python-pytest-shard")
+      (version (git-version "0.1.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AdamGleave/pytest-shard")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1h31m68igz670bzl307hazjrfbr8pk14mxflllar18ydmlrnl677"))))
+      (build-system pyproject-build-system)
+      (propagated-inputs (list python-pytest))
+      (home-page "https://github.com/AdamGleave/pytest-shard")
+      (synopsis "Pytest plugin for sharding tests")
+      (description "This package provides a Pytest extension for sharding
+tests at the granularity of individual test cases, which can be run in
+parallel and on multiple machines.")
+      (license license:expat))))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 06/31] gnu: Add python-expecttest.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (4 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 05/31] gnu: Add python-pytest-shard David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
                   ` (25 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-expecttest): New variable.
---
 gnu/packages/python-check.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 2338f32801..94694316ca 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2077,6 +2077,41 @@ (define-public python-eradicate
 valid Python syntax that are likely to be commented out code.")
     (license license:expat)))
 
+(define-public python-expecttest
+  (let ((commit "683b09a352cc426851adc2e3a9f46e0ab25e4dee")
+        (revision "0"))
+    (package
+      (name "python-expecttest")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ezyang/expecttest")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1djwxp9x1hczzxbimv1b1bmd083am88v27l82nmlkhvzyg2cmpvv"))))
+      (build-system pyproject-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; The test runs tests expected to fail, so the output is
+                  ;; confusing
+                  (invoke "python3" "test_expecttest.py")))))))
+      (native-inputs (list python-hypothesis poetry))
+      (home-page "https://github.com/ezyang/expecttest")
+      (synopsis "Python module for expect tests")
+      (description "@code{expecttest} is a Python module for expect tests, where
+the initial expected value of a test can be automatically set by running the
+test itself.")
+      (license license:expat))))
+
 (define-public python-robber
   (package
     (name "python-robber")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 07/31] gnu: Add python-pytest-rerunfailures-13.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (5 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 06/31] gnu: Add python-expecttest David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 08/31] gnu: Add miniz David Elsing
                   ` (24 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-rerunfailures-13): New variable.
---
 gnu/packages/python-check.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 94694316ca..67822c4c50 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2463,6 +2463,17 @@ (define-public python-pytest-rerunfailures
 eliminate flaky failures.")
     (license license:mpl2.0)))
 
+(define-public python-pytest-rerunfailures-13
+  (package
+    (inherit python-pytest-rerunfailures)
+    (version "13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-rerunfailures" version))
+       (sha256
+        (base32 "16cin0chv59w4rvnd6r0fisp0s8avmp07rwn9da6yixw43jdncp1"))))))
+
 (define-public python-xunitparser
   (package
     (name "python-xunitparser")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 08/31] gnu: Add miniz.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (6 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 09/31] gnu: Add miniz-for-pytorch David Elsing
                   ` (23 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz): New variable.
---
 gnu/packages/compression.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 5de17b6b51..74075df0ee 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2838,3 +2838,31 @@ (define-public unrar-free
 libarchive.  It does not rival the non-free @code{unrar} in terms of features,
 but special care has been taken to ensure it meets most user's needs.")
     (license license:gpl2+)))
+
+(define-public miniz
+  (package
+    (name "miniz")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0672q35vjrpakmsr1gwj9k5fwv5ihzhahm19bq4y74wqpn91p7fw"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON")
+      ;; No tests
+      #:tests? #f))
+    (home-page "https://github.com/richgel999/miniz")
+    (synopsis "Independent implementation of zlib and Deflate compression")
+    (description "Miniz is a lossless data compression library that implements
+the zlib (RFC 1950) and Deflate (RFC 1951) compressed data format
+specification standards.  It supports the most commonly used functions
+exported by the zlib library.")
+    (license license:expat)))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 09/31] gnu: Add miniz-for-pytorch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (7 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 08/31] gnu: Add miniz David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 10/31] gnu: Add libnop David Elsing
                   ` (22 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz-for-pytorch): New variable.
* gnu/packages/patches/miniz-for-pytorch.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                 |  1 +
 gnu/packages/compression.scm                 | 21 +++++++++
 gnu/packages/patches/miniz-for-pytorch.patch | 47 ++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 83937db4c8..06b3238684 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1687,6 +1687,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/miniz-for-pytorch.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 74075df0ee..dcea1f9ec7 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2866,3 +2866,24 @@ (define-public miniz
 specification standards.  It supports the most commonly used functions
 exported by the zlib library.")
     (license license:expat)))
+
+(define-public miniz-for-pytorch
+  (package
+    (inherit miniz)
+    (version "pytorch-2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit "2.2.0")))
+              (file-name (git-file-name (package-name miniz) version))
+              (sha256
+               (base32
+                "09j9ihigfsavgcmk8l36zmbjvdf1x1w7h2v4rkww1qk1sb43y5zf"))
+              (patches (search-patches "miniz-for-pytorch.patch"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments miniz)
+       ((#:configure-flags flags '())
+        ;; The changes break the examples.
+        `(cons "-DBUILD_EXAMPLES=OFF" ,flags))))
+    (properties '((hidden? . #t)))))
diff --git a/gnu/packages/patches/miniz-for-pytorch.patch b/gnu/packages/patches/miniz-for-pytorch.patch
new file mode 100644
index 0000000000..19fa705a31
--- /dev/null
+++ b/gnu/packages/patches/miniz-for-pytorch.patch
@@ -0,0 +1,47 @@
+Modifications from the internal fork of the python-pytorch package.
+
+diff --git a/miniz.h b/miniz.h
+index 42e1ea2..5869ab9 100644
+--- a/miniz.h
++++ b/miniz.h
+@@ -123,7 +123,7 @@
+ /* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */
+ /* get/set file times, and the C run-time funcs that get/set times won't be called. */
+ /* The current downside is the times written to your archives will be from 1979. */
+-/*#define MINIZ_NO_TIME */
++#define MINIZ_NO_TIME
+ 
+ /* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
+ /*#define MINIZ_NO_ARCHIVE_APIS */
+@@ -135,7 +135,7 @@
+ /*#define MINIZ_NO_ZLIB_APIS */
+ 
+ /* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */
+-/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
++#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+ 
+ /* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. 
+    Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc
+@@ -172,8 +172,7 @@
+ #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
+ #if MINIZ_X86_OR_X64_CPU
+ /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
+-#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
+-#define MINIZ_UNALIGNED_USE_MEMCPY
++#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #else
+ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #endif
+diff --git a/miniz_zip.h b/miniz_zip.h
+index 82502bd..3d92255 100644
+--- a/miniz_zip.h
++++ b/miniz_zip.h
+@@ -150,7 +150,7 @@ typedef enum {
+     MZ_ZIP_TOTAL_ERRORS
+ } mz_zip_error;
+ 
+-typedef struct
++typedef struct mz_zip_archive
+ {
+     mz_uint64 m_archive_size;
+     mz_uint64 m_central_directory_file_ofs;
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 10/31] gnu: Add libnop.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (8 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 09/31] gnu: Add miniz-for-pytorch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 11/31] gnu: Remove flatbuffers-next-shared David Elsing
                   ` (21 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (libnop): New variable.
---
 gnu/packages/serialization.scm | 38 ++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 331fae80cf..93d12e714b 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -936,3 +936,41 @@ (define-public python-feather-format
     (description "This package provides a Python wrapper library to the
 Apache Arrow-based Feather binary columnar serialization data frame format.")
     (license license:asl2.0)))
+
+(define-public libnop
+  (let ((commit "35e800d81f28c632956c5a592e3cbe8085ecd430")
+        (revision "0"))
+    (package
+      (name "libnop")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/libnop")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0qqbaljq54qiq0dky9nj47igfcs065ry526jg9a0aafbfl9krpy2"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:test-target "test"
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "out/test"))))
+            (replace 'install
+              (lambda _
+                (copy-recursively
+                 "include" (string-append #$output "/include")))))))
+      (native-inputs (list googletest))
+      (home-page "https://github.com/google/libnop")
+      (synopsis "C++ Native Object Protocols")
+      (description "@code{libnop} is a header-only library for serializing and
+deserializing C++ data types without external code generators or runtime
+support libraries.")
+      (license license:asl2.0))))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 11/31] gnu: Remove flatbuffers-next-shared.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (9 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 10/31] gnu: Add libnop David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
                   ` (20 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (flatbuffers-next-shared): Delete variable.
* gnu/packages/machine-learning.scm (tensorflow-lite)[arguments]: Use
flatbuffers-next instead of flatbuffers-next-shared.
---
 gnu/packages/machine-learning.scm |  4 ++--
 gnu/packages/serialization.scm    | 11 -----------
 2 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5c18a2e9d5..0a50049b6f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3337,7 +3337,7 @@ (define-public tensorflow-lite
          (string-append "-DEigen3_DIR=" #$(this-package-input "eigen")
                         "/share/eigen3/cmake")
          (string-append "-DFlatBuffers_DIR="
-                        #$(this-package-input "flatbuffers-shared")
+                        #$(this-package-input "flatbuffers")
                         "/lib/cmake/flatbuffers")
          (string-append "-DNEON_2_SSE_DIR=" #$(this-package-input "neon2sse")
                         "/lib/cmake/NEON_2_SSE")
@@ -3424,7 +3424,7 @@ (define-public tensorflow-lite
        ("cpuinfo" ,cpuinfo)
        ("eigen" ,eigen)
        ("fp16" ,fp16)
-       ("flatbuffers-shared" ,flatbuffers-next-shared)
+       ("flatbuffers" ,flatbuffers-next)
        ("gemmlowp" ,gemmlowp)
        ("mesa-headers" ,mesa-headers)
        ("neon2sse" ,neon2sse)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 93d12e714b..8f1d3dab17 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -889,17 +889,6 @@ (define-public flatbuffers-next
                (base32
                 "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
 
-(define-public flatbuffers-next-shared
-  (package
-    (inherit flatbuffers-next)
-    (name "flatbuffers-shared")
-    (version "23.1.21")
-    (arguments
-     (substitute-keyword-arguments (package-arguments flatbuffers-next)
-       ((#:configure-flags  flags)
-        ;; Compile with -fPIC, needed for shared lib.
-        #~(cons "-DFLATBUFFERS_CXX_FLAGS=-fPIC" #$flags))))))
-
 (define-public python-flatbuffers
   (package
     (name "python-flatbuffers")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 12/31] gnu: python-flatbuffers-next: Update to 23.5.26.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (10 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 11/31] gnu: Remove flatbuffers-next-shared David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
                   ` (19 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (python-flatbuffers-next): Update to 23.5.26.
---
 gnu/packages/serialization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 8f1d3dab17..b5b9669762 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -878,7 +878,7 @@ (define-public flatbuffers
 (define-public flatbuffers-next
   (package
     (inherit flatbuffers)
-    (version "23.1.21")
+    (version "23.5.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -887,7 +887,7 @@ (define-public flatbuffers-next
               (file-name (git-file-name "flatbuffers" version))
               (sha256
                (base32
-                "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
+                "0cd12dvkzqdafz46q4302mzgpzbz589zmmiga7bq07f2sqy4vrvv"))))))
 
 (define-public python-flatbuffers
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 13/31] gnu: pthreadpool: Update to commit 178e3e0.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (11 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
                   ` (18 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (pthreadpool): Update to commit 178e3e0.
---
 gnu/packages/parallel.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index ddf4ad016b..4e8ca9af35 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -449,9 +449,9 @@ (define-public python-slurm-magic
 (define-public pthreadpool
   ;; This repository has only one tag, 0.1, which is older than what users
   ;; such as XNNPACK expect.
-  (let ((commit "1787867f6183f056420e532eec640cba25efafea")
+  (let ((commit "178e3e0646cc671708bf78e77c273940130ac637")
         (version "0.1")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "pthreadpool")
       (version (git-version version revision commit))
@@ -462,7 +462,7 @@ (define-public pthreadpool
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02hdvxfn5krw8zivkgjx3b4rk9p02yr4mpdjlp75lsv6z1xf5yrx"))
+                  "1s86lnq9bahacf5wxn7y14w70jh3g9lq1l7y16ijwhifd01nc2km"))
                 (patches (search-patches "pthreadpool-system-libraries.patch"))))
       (build-system cmake-build-system)
       (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 14/31] gnu: cpuinfo: Update to commit aa4b216.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (12 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
                   ` (17 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (cpuinfo): Update to commit aa4b216.
[arguments]: Set the "-DUSE_SYSTEM_LIBS=ON" configure flag instead of using a
patch.
* gnu/packages/patches/cpuinfo-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/parallel.scm                     | 11 ++--
 .../patches/cpuinfo-system-libraries.patch    | 50 -------------------
 3 files changed, 6 insertions(+), 56 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 06b3238684..c290d91cbb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1065,7 +1065,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/cppcheck-disable-char-signedness-test.patch	\
-  %D%/packages/patches/cpuinfo-system-libraries.patch		\
   %D%/packages/patches/cpulimit-with-glib-2.32.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crc32c-unbundle-googletest.patch		\
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 4e8ca9af35..4dc0bee898 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -479,8 +479,8 @@ (define-public pthreadpool
 (define-public cpuinfo
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (revision "2")
-        (commit "53298db833c5c5a1598639e9b47cc1a602bbac26"))
+        (revision "3")
+        (commit "aa4b2163b99ac9534194520f70b93eeefb0b3b4e"))
     (package
       (name "cpuinfo")
       (version (git-version version revision commit))
@@ -491,12 +491,13 @@ (define-public cpuinfo
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "01kfgxya2w32dz9bd3qm3i2d6nffw0qfyql11rxl7d3g830brj5k"))
-                (patches (search-patches "cpuinfo-system-libraries.patch"))))
+                  "12x4krkyzxngf1l2ck33lnsp8pyzf6gyjj9mp9cnka9mw3h6617m"))))
       (build-system cmake-build-system)
       (arguments
        (list
-        #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON")
+        #:configure-flags
+        '(list "-DBUILD_SHARED_LIBS=ON"
+               "-DUSE_SYSTEM_LIBS=ON")
         #:phases
         '(modify-phases %standard-phases
            (add-after 'unpack 'skip-bad-test
diff --git a/gnu/packages/patches/cpuinfo-system-libraries.patch b/gnu/packages/patches/cpuinfo-system-libraries.patch
deleted file mode 100644
index e25446e9da..0000000000
--- a/gnu/packages/patches/cpuinfo-system-libraries.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57abc26..761c612 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -93,7 +93,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
- 
- IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -105,7 +105,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
- ENDIF()
- 
- IF(CPUINFO_BUILD_BENCHMARKS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -271,14 +271,6 @@ INSTALL(TARGETS cpuinfo
- 
- # ---[ cpuinfo micro-benchmarks
- IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
--  # ---[ Build google benchmark
--  IF(NOT TARGET benchmark)
--    SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "")
--    ADD_SUBDIRECTORY(
--      "${GOOGLEBENCHMARK_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark")
--  ENDIF()
--
-   IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$")
-     ADD_EXECUTABLE(get-current-bench bench/get-current.cc)
-     TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark)
-@@ -289,7 +281,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
- ENDIF()
- 
- IF(CPUINFO_SUPPORTED_PLATFORM)
--  IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
-+  IF(FALSE)
-     # ---[ Build google test
-     IF(NOT TARGET gtest)
-       IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (13 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
                   ` (16 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (clog)[arguments]: Add "-DUSE_SYSTEM_LIBS=ON"
to #:configure-flags.
* gnu/packages/patches/clog-fix-shared-build.patch: Adjust patch.
---
 gnu/packages/parallel.scm                     | 13 ++++---
 .../patches/clog-fix-shared-build.patch       | 39 ++-----------------
 2 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 4dc0bee898..7d53f3a769 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -523,11 +523,14 @@ (define-public clog
               (inherit (package-source cpuinfo))
               (patches (search-patches "clog-fix-shared-build.patch"))))
     (arguments
-     (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'chdir
-                          (lambda _
-                            (chdir "deps/clog"))))))
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON"
+         "-DUSE_SYSTEM_LIBS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'chdir
+                     (lambda _
+                       (chdir "deps/clog"))))))
     (native-inputs (list googletest))
     (inputs '())
     (synopsis "C-style logging library based on printf")
diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch
index bf80544b90..eb305339f5 100644
--- a/gnu/packages/patches/clog-fix-shared-build.patch
+++ b/gnu/packages/patches/clog-fix-shared-build.patch
@@ -1,50 +1,19 @@
 Author: Antero Mejr <antero@mailbox.org>
-Notes: Disabled function visibility hacks and googletest download. Enabled
-non-static builds.
+Notes: Disabled function visibility hacks. Enabled non-static builds.
 
 diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
-index 083f519..b7b225a 100644
+index 6e50c41..db02e95 100644
 --- a/deps/clog/CMakeLists.txt
 +++ b/deps/clog/CMakeLists.txt
-@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
- SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
+@@ -55,7 +55,7 @@ IF(CLOG_BUILD_TESTS)
+ ENDIF()
  
--IF(CLOG_BUILD_TESTS)
--  IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
--    MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
--    CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
--  ENDIF()
--ENDIF()
--
  # ---[ clog library
 -ADD_LIBRARY(clog STATIC src/clog.c)
 +ADD_LIBRARY(clog src/clog.c)
  SET_TARGET_PROPERTIES(clog PROPERTIES
    C_STANDARD 99
    C_EXTENSIONS NO)
-@@ -74,16 +62,6 @@ INSTALL(TARGETS clog
- 
- # ---[ clog tests
- IF(CLOG_BUILD_TESTS)
--  # ---[ Build google test
--  IF(NOT TARGET gtest)
--    IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
--      SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
--    ENDIF()
--    ADD_SUBDIRECTORY(
--      "${GOOGLETEST_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
--  ENDIF()
--
-   ADD_EXECUTABLE(clog-test test/clog.cc)
-   SET_TARGET_PROPERTIES(clog-test PROPERTIES
-     CXX_STANDARD 11
 diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h
 index 4143761..aa9000f 100644
 --- a/deps/clog/include/clog.h
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 16/31] gnu: nnpack: Update to commit 70a77f4.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (14 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
                   ` (15 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (nnpack): Update to commit 70a77f4.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 0a50049b6f..846fb7a718 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3974,8 +3974,8 @@ (define-public python-umap-learn
 
 (define-public nnpack
   (let ((version "0.0")
-        (commit "c07e3a0400713d546e0dea2d5466dd22ea389c73")
-        (revision "1"))
+        (commit "70a77f485e8b934224f3a79efd8edcd84cd377b8")
+        (revision "2"))
     (package
       (name "nnpack")
       (version (git-version version revision commit))
@@ -3986,7 +3986,7 @@ (define-public nnpack
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0s0kk3a35w3yzf0q447p72350sbsh4qhg6vm3y2djbj4xpg7jc8v"))
+                  "0c4pw926279s3rlx7mg4l4vhnfy6dh374n6w7zqhcn0bxpym1hv1"))
                 (patches (search-patches "nnpack-system-libraries.patch"))))
       (build-system cmake-build-system)
       ;; XXX: The test suite runs but it's very expensive, and on x86_64 CPUs
@@ -4019,6 +4019,8 @@ (define-public nnpack
              googletest))
       (native-inputs
        (list python python-peachpy python-six))
+      ;; Supported for Linux
+      (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
 (define-public xnnpack
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 17/31] gnu: oneapi-dnnl: Update to 3.3.5.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (15 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 18/31] gnu: Add tensorpipe David Elsing
                   ` (14 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl): Update to 3.3.5.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 846fb7a718..99d7399c12 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5375,7 +5375,7 @@ (define-public python-brian2tools
 (define-public oneapi-dnnl
   (package
     (name "oneapi-dnnl")
-    (version "3.1")
+    (version "3.3.5")
     (source
      (origin
        (method git-fetch)
@@ -5384,7 +5384,7 @@ (define-public oneapi-dnnl
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
+        (base32 "05ra5zziys2hvn29y6ysiqzsf4jr9bf2bci5sc3swvf3bs2y5ihf"))))
     (build-system cmake-build-system)
     (arguments (if (target-riscv64?)
                    (list #:configure-flags #~'("-DDNNL_CPU_RUNTIME=SEQ"))
@@ -5394,6 +5394,7 @@ (define-public oneapi-dnnl
     (description
      "OneAPI Deep Neural Network Library (oneDNN) is a cross-platform
 performance library of basic building blocks for deep learning applications.")
+    (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
 (define-public python-gguf
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 18/31] gnu: Add tensorpipe.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (16 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 19/31] gnu: Add fbgemm David Elsing
                   ` (13 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (tensorpipe): New variable.
---
 gnu/packages/machine-learning.scm | 36 +++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 99d7399c12..a58ccfbd5c 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -90,6 +90,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -4099,6 +4100,41 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public tensorpipe
+  (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
+        (revision "0"))
+    (package
+      (name "tensorpipe")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pytorch/tensorpipe")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0sbpkd69rzybw2j89sjkf4s0j8vkk96d51bsps28894989a75j6v"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(delete-file-recursively "third_party"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:configure-flags
+        ''("-DBUILD_SHARED_LIBS=ON")
+        ;; There are no tests
+        #:tests? #f))
+      (inputs (list libuv))
+      (native-inputs (list googletest pkg-config pybind11 libnop))
+      (home-page "https://github.com/pytorch/tensorpipe")
+      (synopsis "Tensor-aware point-to-point communication primitive for
+machine learning")
+      (description "TensorPipe provides a tensor-aware channel to transfer
+rich objects from one process to another while using the fastest transport for
+the tensors contained therein.")
+      (license license:bsd-3))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 19/31] gnu: Add fbgemm.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (17 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 18/31] gnu: Add tensorpipe David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 20/31] gnu: Add qnnpack David Elsing
                   ` (12 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (fbgemm): New variable.
* gnu/packages/patches/fbgemm-use-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/machine-learning.scm             | 31 ++++++++++
 .../patches/fbgemm-use-system-libraries.patch | 62 +++++++++++++++++++
 3 files changed, 94 insertions(+)
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c290d91cbb..f81ea13031 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1172,6 +1172,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spUtils.patch			\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
+  %D%/packages/patches/fbgemm-use-system-libraries.patch	\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
   %D%/packages/patches/fbreader-fix-icon.patch		\
   %D%/packages/patches/fenics-dolfin-algorithm.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index a58ccfbd5c..5825955d3e 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4100,6 +4100,37 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public fbgemm
+  (package
+    (name "fbgemm")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pytorch/fbgemm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mw30v55aicqdbh3xwfj9p8f38nw70ks5cxiwpgwjsk0dylah9rf"))
+              (patches (search-patches "fbgemm-use-system-libraries.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(delete-file-recursively "third_party"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DFBGEMM_LIBRARY_TYPE=shared")))
+    (inputs (list asmjit cpuinfo))
+    (native-inputs (list pkg-config python googletest))
+    (home-page "https://github.com/pytorch/fbgemm")
+    (synopsis "Facebook GEneral Matrix Multiplication")
+    (description "Low-precision, high-performance matrix-matrix
+multiplications and convolution library for server-side inference.")
+    (supported-systems '("x86_64-linux"))
+    (license license:bsd-3)))
+
 (define-public tensorpipe
   (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
         (revision "0"))
diff --git a/gnu/packages/patches/fbgemm-use-system-libraries.patch b/gnu/packages/patches/fbgemm-use-system-libraries.patch
new file mode 100644
index 0000000000..456bc3021c
--- /dev/null
+++ b/gnu/packages/patches/fbgemm-use-system-libraries.patch
@@ -0,0 +1,62 @@
+Use the asmjit and cpuinfo packages.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 134523e..b88b0e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -235,7 +235,7 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(WARNING "==========")
+ 
+-if(NOT TARGET asmjit)
++if(FALSE)
+   #Download asmjit from github if ASMJIT_SRC_DIR is not specified.
+   if(NOT DEFINED ASMJIT_SRC_DIR)
+     set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/third_party/asmjit"
+@@ -264,7 +264,7 @@ if(NOT TARGET asmjit)
+   endif()
+ endif()
+ 
+-if(NOT TARGET cpuinfo)
++if(FALSE)
+   #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
+   if(NOT DEFINED CPUINFO_SOURCE_DIR)
+     set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/third_party/cpuinfo"
+@@ -340,9 +340,12 @@ target_include_directories(fbgemm BEFORE
+ target_link_libraries(fbgemm
+   $<BUILD_INTERFACE:asmjit>
+   $<BUILD_INTERFACE:cpuinfo>)
+-add_dependencies(fbgemm
+-  asmjit
+-  cpuinfo)
++
++find_package(asmjit)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(libcpuinfo REQUIRED IMPORTED_TARGET libcpuinfo)
++
++target_link_libraries(fbgemm asmjit::asmjit PkgConfig::libcpuinfo)
+ 
+ if(OpenMP_FOUND)
+   target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 2cffddf..bd4d409 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -14,7 +14,7 @@ set(CMAKE_C_STANDARD 11)
+ set(CMAKE_C_EXTENSIONS OFF)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+ 
+-if(FBGEMM_BUILD_TESTS AND NOT TARGET gtest)
++if(FALSE)
+   #Download Googletest framework from github if
+   #GOOGLETEST_SOURCE_DIR is not specified.
+   if(NOT DEFINED GOOGLETEST_SOURCE_DIR)
+@@ -78,7 +78,7 @@ macro(add_gtest TESTNAME)
+     target_link_libraries(${TESTNAME} ${OpenMP_CXX_LIBRARIES})
+   endif()
+ 
+-  add_dependencies(${TESTNAME} gtest fbgemm)
++  add_dependencies(${TESTNAME} fbgemm)
+   add_test(${TESTNAME} ${TESTNAME})
+   set_target_properties(${TESTNAME} PROPERTIES FOLDER test)
+ endmacro()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 20/31] gnu: Add qnnpack.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (18 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 19/31] gnu: Add fbgemm David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 21/31] gnu: Add foxi David Elsing
                   ` (11 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (qnnpack): New variable.
---
 gnu/packages/machine-learning.scm | 49 +++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5825955d3e..c883af54d9 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4024,6 +4024,55 @@ (define-public nnpack
       (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
+(define-public qnnpack
+  (let ((commit "7d2a4e9931a82adc3814275b6219a03e24e36b4c")
+        (revision "0"))
+    (package
+      (name "qnnpack")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pytorch/qnnpack")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1dgzriiaz9arsrfwhx42y4l74wbzn6xvdmllfb66v4pmvi5gpxc5"))
+         (modules '((guix build utils)))
+         (snippet
+          '(delete-file-recursively "deps"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; The shared library build fails with linker errors, so we build the
+        ;; static library with -fPIC as in the bundled PyTorch version.
+        #:configure-flags
+        ''("-DQNNPACK_LIBRARY_TYPE=static"
+           "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("IF.*SOURCE_DIR.*")
+                   "IF(FALSE)\n")
+                  (("IF\\(NOT TARGET.*")
+                   "IF(FALSE)\n")
+                  (("TARGET_LINK_LIBRARIES.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(TARGET_LINK_LIBRARIES.*) fp16 (.*)" _ before after)
+                   (string-append before " " after))))))))
+      (inputs (list clog cpuinfo fp16 fxdiv psimd pthreadpool))
+      (native-inputs (list googletest googlebenchmark))
+      (home-page "https://github.com/pytorch/qnnpack")
+      (synopsis "Quantized Neural Network PACKage")
+      (description "QNNPACK is a library for low-precision neural network
+inference.  It contains the implementation of common neural network operators
+on quantized 8-bit tensors.")
+      (license license:bsd-3))))
+
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 21/31] gnu: Add foxi.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (19 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 20/31] gnu: Add qnnpack David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 22/31] gnu: Add ideep-pytorch David Elsing
                   ` (10 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (foxi): New variable.
* gnu/packages/patches/foxi-fix-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                              |  1 +
 gnu/packages/machine-learning.scm         | 29 ++++++++++++
 gnu/packages/patches/foxi-fix-build.patch | 55 +++++++++++++++++++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f81ea13031..c88c21ac60 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1204,6 +1204,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
+  %D%/packages/patches/foxi-fix-build.patch			\
   %D%/packages/patches/fp16-implicit-double.patch		\
   %D%/packages/patches/fp16-system-libraries.patch		\
   %D%/packages/patches/fpc-reproducibility.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c883af54d9..5c21e4ed46 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4215,6 +4215,35 @@ (define-public tensorpipe
 the tensors contained therein.")
       (license license:bsd-3))))
 
+(define-public foxi
+  (let
+      ((commit "c278588e34e535f0bb8f00df3880d26928038cad")
+       (revision "0"))
+    (package
+      (name "foxi")
+      (version (git-version "1.4.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/houseroad/foxi")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0q3ssm5hmmvwfwx87mnnajbavzgpahybw6rpn8ysr9r095dwgq5a"))
+                (patches (search-patches "foxi-fix-build.patch"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; No tests
+        #:tests? #f))
+      (home-page "https://github.com/houseroad/foxi")
+      (synopsis "ONNXIFI with Facebook Extension")
+      (description "ONNX Interface for Framework Integration is a cross-platform
+API for loading and executing ONNX graphs on optimized backends.  This package
+contains facebook extensions and is used by PyTorch.")
+      (license license:expat))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
diff --git a/gnu/packages/patches/foxi-fix-build.patch b/gnu/packages/patches/foxi-fix-build.patch
new file mode 100644
index 0000000000..d82090ad38
--- /dev/null
+++ b/gnu/packages/patches/foxi-fix-build.patch
@@ -0,0 +1,55 @@
+Taken from https://github.com/houseroad/foxi/pull/25.
+
+diff --git a/foxi/onnxifi_dummy.c b/foxi/onnxifi_dummy.c
+index 2115af9..73e25fc 100644
+--- a/foxi/onnxifi_dummy.c
++++ b/foxi/onnxifi_dummy.c
+@@ -103,7 +103,10 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph) {
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader) {
++
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+   }
+@@ -215,6 +218,8 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI
+ onnxWaitEventFor(onnxEvent event,
+                  uint32_t timeoutMs,
+                  onnxEventState* eventState,
+-                 onnxStatus* eventStatus) {
++		  onnxStatus* eventStatus,
++		  char* message,
++		  size_t* messageLength) {
+   return ONNXIFI_STATUS_SUCCESS;
+ }
+\ No newline at end of file
+diff --git a/foxi/onnxifi_wrapper.c b/foxi/onnxifi_wrapper.c
+index 98a9325..abe1440 100644
+--- a/foxi/onnxifi_wrapper.c
++++ b/foxi/onnxifi_wrapper.c
+@@ -761,7 +761,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightsCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph)
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader)
+ {
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+@@ -797,7 +799,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     onnxModel,
+     weightsCount,
+     weightDescriptors,
+-    &graph_wrapper->graph);
++    &graph_wrapper->graph,
++    maxSeqLength,
++    deferredWeightReader);
+   switch (status) {
+     case ONNXIFI_STATUS_SUCCESS:
+     case ONNXIFI_STATUS_FALLBACK:
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 22/31] gnu: Add ideep-pytorch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (20 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 21/31] gnu: Add foxi David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
                   ` (9 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5c21e4ed46..bfad33eadb 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -51,6 +51,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (guix download)
   #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system pyproject)
@@ -4244,6 +4245,31 @@ (define-public foxi
 contains facebook extensions and is used by PyTorch.")
       (license license:expat))))
 
+(define-public ideep-pytorch
+  (package
+    (name "ideep-pytorch")
+    (version "3.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0y6r938qryi3bnf15rp0fbilsfimdcgmvsa0ygwrn3zifw6386rb"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan
+      ''(("include" "include"))))
+    (home-page "https://github.com/intel/ideep")
+    (synopsis "Ideep headers for interal use by PyTorch")
+    (description "This library is used internally as header-only library by
+PyTorch.")
+    (license license:expat)))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 23/31] gnu: xnnpack: Update to commit 51a9875.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (21 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 22/31] gnu: Add ideep-pytorch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
                   ` (8 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

The tests which fail to build if building the shared library are removed by a
patch. Autogenerated files are removed by a snippet and generated in a
separate build phase.

* gnu/packages/machine-learning.scm (xnnpack): Update to commit 51a9875.
[source]: Add patch for tests. Add snippet to remove autogenerated files.
[arguments]: New modules and phase arguments.
[inputs]: Add clog and cpuinfo.
[native-inputs]: New field.
* gnu/packages/patches/xnnpack-remove-broken-tests.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/patches/xnnpack-system-libraries.patch: Update patch.
---
 gnu/local.mk                                  |    1 +
 gnu/packages/machine-learning.scm             |  106 +-
 .../patches/xnnpack-remove-broken-tests.patch |  335 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 4 files changed, 2922 insertions(+), 1653 deletions(-)
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c88c21ac60..7b87bf93e5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2198,6 +2198,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
+  %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
   %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index bfad33eadb..35d96ac012 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4077,41 +4077,109 @@ (define-public qnnpack
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (commit "ae108ef49aa5623b896fc93d4298c49d1750d9ba")
-        (revision "2"))
+        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
+        (revision "3"))
     (package
       (name "xnnpack")
       (version (git-version version revision commit))
       (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0q68q2jxiiiblx45q4337k13ppgh5vqjwrwznchcnpb8hawjj3zl"))
-                (patches (search-patches "xnnpack-system-libraries.patch"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url home-page) (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
+         ;; Some tests fail to link as they use internal symbols, which are
+         ;; not included in the shared library.
+         ;; XXX: Additionally, these tests fail on i686 due to incorrect results:
+         ;; 171 - f32-vlrelu-test (Failed)
+         ;; 211 - qs8-gavgpool-minmax-fp32-test (Failed)
+         ;; 224 - qu8-avgpool-minmax-fp32-test (Failed)
+         ;; 228 - qu8-gavgpool-minmax-fp32-test (Failed)
+         ;; 263 - x32-packx-test (Failed)
+         (patches (search-patches "xnnpack-remove-broken-tests.patch"))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (ice-9 textual-ports)
+                    (srfi srfi-26)))
+         (snippet
+          '(begin
+             ;; Remove autogenerated files
+             (for-each
+              (lambda (dir)
+                (let ((gendir (string-append "src/" dir "/gen")))
+                  (when (file-exists? gendir)
+                    (delete-file-recursively gendir)
+                    ;; Needed for the scripts generating the files
+                    (mkdir gendir))))
+              (scandir "src" (negate (cut member <> '("." "..")))))
+             (delete-file-recursively "google3")
+             (delete-file "cmake/microkernels.cmake")
+             ;; Additional autogenerated files which contain the string "Auto-generated file"
+             (for-each
+              (lambda (dir)
+                (for-each
+                 (lambda (name)
+                   (let ((path (string-append dir "/" name)))
+                     (when (call-with-input-file path
+                             (lambda (port)
+                               (string-contains
+                                (get-string-all port)
+                                "Auto-generated file")))
+                       (delete-file path))))
+                 (scandir dir (negate (cut member <> '("." ".."))))))
+              '("test" "bench" "eval" "models" "src/enums" "src/xnnpack"))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:configure-flags '("-DXNNPACK_USE_SYSTEM_LIBS=YES"
+       (list
+        #:build-type "Release" ;; Debugging symbols require a lot of disk space
+        #:configure-flags ''("-DXNNPACK_USE_SYSTEM_LIBS=YES"
                              "-DBUILD_SHARED_LIBS=ON"
+                             "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
                              "-DXNNPACK_LIBRARY_TYPE=shared"
-                             "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                              "-DXNNPACK_BUILD_BENCHMARKS=FALSE")
-
-         ;; FIXME: Building tests leads to a CMake error:
-         ;;
-         ;;   ADD_LIBRARY cannot create target "all_microkernels" because
-         ;;   another target with the same name already exists.
-         #:tests? #f))
+        #:modules '((ice-9 ftw)
+                    (guix build cmake-build-system)
+                    (guix build utils))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'fix-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("TARGET_INCLUDE_DIRECTORIES\\((pthreadpool|cpuinfo).*") "")
+                  ((".*IF\\(NOT TARGET gtest\\).*")
+                   "IF(FALSE)\n")
+                  (("SET\\(CMAKE_CXX_STANDARD 11\\)")
+                   "SET(CMAKE_CXX_STANDARD 14)")
+                  (("AMD64") "x86_64"))))
+            (add-after 'patch-source-shebangs 'generate-files
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (when (and (string-prefix? "generate" name)
+                              (string-suffix? ".sh" name)
+                              (not (equal? "generate-amalgamation.sh" name)))
+                     (display (string-append name "\n"))
+                     (invoke "bash" (string-append "scripts/" name))))
+                 (scandir "scripts"))
+                ;; These need to run after the above scripts
+                (display "Remaining files\n")
+                (invoke "python3" "tools/update-microkernels.py")
+                (substitute* "tools/amalgamate-microkernels.py"
+                  (("BUILD") "BUILD.bazel"))
+                (invoke "bash" "scripts/generate-amalgamation.sh"))))))
       (inputs
-       (list cpuinfo
+       (list clog
+             cpuinfo
              pthreadpool
              googletest
              googlebenchmark
              fxdiv
              fp16
              psimd))
+      (native-inputs (list python-pyyaml python-wrapper))
       (synopsis "Optimized floating-point neural network inference operators")
       (description
        "XNNPACK is a highly optimized library of floating-point neural network
diff --git a/gnu/packages/patches/xnnpack-remove-broken-tests.patch b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
new file mode 100644
index 0000000000..529dd2590c
--- /dev/null
+++ b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
@@ -0,0 +1,335 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 95df99eae..ab57d5efa 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -978,16 +978,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+-    ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(argmax-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(argmax-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME argmax-pooling-nhwc-test COMMAND argmax-pooling-nhwc-test)
+-
+-    ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1066,11 +1056,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(copy-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME copy-nc-eager-test COMMAND copy-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+-
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-nchw2nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(depth-to-space-nchw2nhwc-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1116,11 +1101,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+-
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1146,11 +1126,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1191,11 +1166,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+-
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1312,16 +1282,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(fusion-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fusion-test COMMAND fusion-test)
+ 
+-    ADD_EXECUTABLE(memory-planner-test test/memory-planner-test.cc)
+-    TARGET_INCLUDE_DIRECTORIES(memory-planner-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(memory-planner-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME memory-planner-test COMMAND memory-planner-test)
+-
+-    ADD_EXECUTABLE(subgraph-fp16-test test/subgraph-fp16.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subgraph-fp16-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subgraph-fp16-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME subgraph-fp16-test COMMAND subgraph-fp16-test)
+-
+     ADD_EXECUTABLE(subgraph-nchw-test test/subgraph-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(subgraph-nchw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(subgraph-nchw-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1347,226 +1307,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_INCLUDE_DIRECTORIES(argmax-pooling-2d-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(argmax-pooling-2d-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME argmax-pooling-2d-test COMMAND argmax-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+-    TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+-
+-    ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+-    TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+-
+-    ADD_EXECUTABLE(clamp-test test/clamp.cc)
+-    TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME clamp-test COMMAND clamp-test)
+-
+-    ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate2-test COMMAND concatenate2-test)
+-
+-    ADD_EXECUTABLE(concatenate3-test test/concatenate3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate3-test COMMAND concatenate3-test)
+-
+-    ADD_EXECUTABLE(concatenate4-test test/concatenate4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate4-test COMMAND concatenate4-test)
+-
+-    ADD_EXECUTABLE(convert-test test/convert.cc)
+-    TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME convert-test COMMAND convert-test)
+-
+-    ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+-
+-    ADD_EXECUTABLE(copy-test test/copy.cc)
+-    TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME copy-test COMMAND copy-test)
+-
+-    ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+-    SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+-
+-    ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+-    TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+-
+-    ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+-
+-    ADD_EXECUTABLE(divide2-test test/divide2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME divide2-test COMMAND divide2-test)
+-
+-    ADD_EXECUTABLE(elu-test test/elu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME elu-test COMMAND elu-test)
+-
+-    ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+-
+-    ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+-
+-    ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+-
+-    ADD_EXECUTABLE(floor-test test/floor.cc)
+-    TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME floor-test COMMAND floor-test)
+-
+-    ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+-    TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+-    TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+-
+-    ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+-
+-    ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+-
+-    ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+-
+-    ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+-
+-    ADD_EXECUTABLE(negate-test test/negate.cc)
+-    TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME negate-test COMMAND negate-test)
+-
+-    ADD_EXECUTABLE(prelu-test test/prelu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME prelu-test COMMAND prelu-test)
+-
+-    ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+-    SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+-
+-    ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+-    SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+-
+-    ADD_EXECUTABLE(softmax-test test/softmax.cc)
+-    TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME softmax-test COMMAND softmax-test)
+-
+-    ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+-
+-    ADD_EXECUTABLE(square-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-test COMMAND square-test)
+-
+-    ADD_EXECUTABLE(square-root-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-root-test COMMAND square-root-test)
+-
+-    ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+-    TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+-
+-    ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+-
+-    ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+-
+-    ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+-
+-    ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+-
+-    ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+-
+-    ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+   # ---[ Normalization unit tests
+@@ -2834,21 +2574,7 @@ IF(XNNPACK_BUILD_TESTS)
+     ADD_EXECUTABLE(microkernel-utils-test test/microkernel-utils.cc)
+     TARGET_INCLUDE_DIRECTORIES(microkernel-utils-test PRIVATE include src)
+     TARGET_LINK_LIBRARIES(microkernel-utils-test PRIVATE microkernel-utils gtest gtest_main pthreadpool)
+-
+-    ADD_EXECUTABLE(operator-utils-test test/operator-utils.cc)
+-    TARGET_INCLUDE_DIRECTORIES(operator-utils-test PRIVATE include src)
+-    TARGET_LINK_LIBRARIES(operator-utils-test PRIVATE XNNPACK gtest gtest_main pthreadpool)
+   ENDIF()
+-
+-  ADD_EXECUTABLE(packing-test test/packing.cc)
+-  TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+-
+-  ADD_EXECUTABLE(indirection-test test/indirection.cc)
+-  TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+ # ---[ XNNPACK microbenchmarks
diff --git a/gnu/packages/patches/xnnpack-system-libraries.patch b/gnu/packages/patches/xnnpack-system-libraries.patch
index bc9225e927..a711aa0d6c 100644
--- a/gnu/packages/patches/xnnpack-system-libraries.patch
+++ b/gnu/packages/patches/xnnpack-system-libraries.patch
@@ -2,1794 +2,2659 @@ This patch allows the build process to use the provided dependencies instead
 of adding their source as CMake sub-directories (in which case "make install"
 would install googletest's and googlebenchmark's libraries and headers).
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 177b98d5..937385c3 100755
---- CMakeLists.txt	2022-07-06 22:35:09.748104656 +0200
-+++ CMakeLists.txt	2022-07-06 22:47:34.504666953 +0200
-@@ -6608,10 +6608,6 @@
+diff a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
+@@ -850,25 +850,8 @@
+     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
    ENDIF()
  ENDIF()
- TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
+ IF(XNNPACK_BUILD_LIBRARY)
+   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
+-  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
+   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
+ ENDIF()
  
- # ---[ Configure FXdiv
- IF(NOT TARGET fxdiv)
-@@ -6630,9 +6626,6 @@
+@@ -889,12 +872,6 @@
      SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
+-IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
+-ENDIF()
  
  # ---[ Configure FP16
  IF(NOT TARGET fp16)
-@@ -6651,10 +6644,6 @@
+@@ -913,17 +890,7 @@
      SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
+ IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
+-
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
+   INSTALL(TARGETS XNNPACK
+       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -943,7 +910,7 @@
+   # Helper libraries
+   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
+   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
+-  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
++  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
+   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
+@@ -960,22 +927,22 @@
+     # ---[ Build operator-level unit tests
+     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
+ 
+     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
+ 
+     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
+ 
+     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+@@ -985,27 +952,27 @@
+ 
+     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
+ 
+     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
+@@ -1015,12 +982,12 @@
+ 
+     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
+ 
+     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
+ 
+     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
+@@ -1035,25 +1002,25 @@
+ 
+     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
+ 
+     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
+ 
+     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
+     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
+     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
+     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
+ 
+     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
+@@ -1068,7 +1035,7 @@
+ 
+     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+@@ -1083,197 +1050,197 @@
+ 
+     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
+ 
+     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
+ 
+     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
+ 
+     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
+ 
+     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
+ 
+     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
+ 
+     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
+ 
+     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
+ 
+     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
+ 
+     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
+ 
+     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
+ 
+     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
+@@ -1293,12 +1260,12 @@
+ 
+     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
+ 
+     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
+ 
+     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
+@@ -1350,22 +1317,22 @@
+ 
+     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+ 
+     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+ 
+     ADD_EXECUTABLE(clamp-test test/clamp.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME clamp-test COMMAND clamp-test)
+ 
+     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+@@ -1385,187 +1352,187 @@
+ 
+     ADD_EXECUTABLE(convert-test test/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME convert-test COMMAND convert-test)
+ 
+     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+ 
+     ADD_EXECUTABLE(copy-test test/copy.cc)
+     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME copy-test COMMAND copy-test)
+ 
+     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+ 
+     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+ 
+     ADD_EXECUTABLE(divide2-test test/divide2.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME divide2-test COMMAND divide2-test)
+ 
+     ADD_EXECUTABLE(elu-test test/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME elu-test COMMAND elu-test)
+ 
+     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+ 
+     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+ 
+     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+ 
+     ADD_EXECUTABLE(floor-test test/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME floor-test COMMAND floor-test)
+ 
+     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+ 
+     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+ 
+     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+ 
+     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+ 
+     ADD_EXECUTABLE(negate-test test/negate.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME negate-test COMMAND negate-test)
+ 
+     ADD_EXECUTABLE(prelu-test test/prelu.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME prelu-test COMMAND prelu-test)
+ 
+     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+ 
+     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
+     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+ 
+     ADD_EXECUTABLE(softmax-test test/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME softmax-test COMMAND softmax-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+ 
+     ADD_EXECUTABLE(square-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-test COMMAND square-test)
+ 
+     ADD_EXECUTABLE(square-root-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-root-test COMMAND square-root-test)
+ 
+     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+ 
+     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+ 
+     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+ 
+     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+ 
+     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+ 
+     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+ 
+     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+@@ -1591,355 +1558,355 @@
  
- INSTALL(TARGETS XNNPACK
-     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -6705,7 +6694,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(add-nd-test add-nd-test)
- 
-   ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -6759,7 +6748,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(clamp-nc-test clamp-nc-test)
- 
-   ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -6777,7 +6766,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convert-nc-test convert-nc-test)
- 
-   ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-@@ -6786,7 +6775,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nhwc-test convolution-nhwc-test)
- 
-   ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-@@ -6795,7 +6784,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nchw-test convolution-nchw-test)
- 
-   ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -6813,7 +6802,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(deconvolution-nhwc-test deconvolution-nhwc-test)
- 
-   ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -6840,7 +6829,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(divide-nd-test divide-nd-test)
- 
-   ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-@@ -6858,7 +6847,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(fully-connected-nc-test fully-connected-nc-test)
- 
-   ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-@@ -6876,7 +6865,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-nwc-test global-average-pooling-nwc-test)
- 
-   ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-@@ -6885,7 +6874,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-ncw-test global-average-pooling-ncw-test)
- 
-   ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-@@ -6894,7 +6883,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(hardswish-nc-test hardswish-nc-test)
- 
-   ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-@@ -6903,7 +6892,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(leaky-relu-nc-test leaky-relu-nc-test)
- 
-   ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-@@ -6912,7 +6901,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(max-pooling-nhwc-test max-pooling-nhwc-test)
- 
-   ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-@@ -6921,7 +6910,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(maximum-nd-test maximum-nd-test)
- 
-   ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-@@ -6930,7 +6919,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(minimum-nd-test minimum-nd-test)
- 
-   ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-@@ -6939,7 +6928,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(multiply-nd-test multiply-nd-test)
- 
-   ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-@@ -6957,7 +6946,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(prelu-nc-test prelu-nc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-@@ -6966,7 +6955,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nhwc-test resize-bilinear-nhwc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-@@ -6975,7 +6964,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nchw-test resize-bilinear-nchw-test)
- 
-   ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-@@ -7029,7 +7018,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(subtract-nd-test subtract-nd-test)
- 
-   ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -7084,7 +7073,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-f32-vcvt-test f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-minmax-test test/f16-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7093,7 +7082,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-dwconv-minmax-test f16-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7102,7 +7091,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-gavgpool-minmax-test f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7111,7 +7100,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-gemm-minmax-test f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7120,7 +7109,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-ibilinear-test f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc $<TARGET_OBJECTS:all_microkernels>  $<TARGET_OBJECTS:packing>)
-@@ -7129,7 +7118,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-igemm-minmax-test f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7138,7 +7127,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-maxpool-minmax-test f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7147,7 +7136,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-spmm-minmax-test f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7156,7 +7145,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
+ 
+   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
+ 
+   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vadd-minmax-test f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7165,7 +7154,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vaddc-minmax-test f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7174,7 +7163,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vclamp-test f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7183,7 +7172,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
+ 
+   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdiv-minmax-test f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7192,7 +7181,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdivc-minmax-test f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7201,7 +7190,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrdivc-minmax-test f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7210,7 +7199,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
+ 
+   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vhswish-test f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7219,7 +7208,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
+ 
+   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vlrelu-test f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7228,7 +7217,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmax-test f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7237,7 +7226,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmaxc-test f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7246,7 +7235,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmin-test f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7255,7 +7244,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
+ 
+   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vminc-test f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7264,7 +7253,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
+ 
+   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmul-minmax-test f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7273,7 +7262,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulc-minmax-test f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7282,7 +7271,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulcaddc-minmax-test f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7291,7 +7280,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
+ 
+   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-prelu-test f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7300,7 +7289,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
+ 
+   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
+ 
+   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
+ 
+   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsub-minmax-test f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7309,7 +7298,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsubc-minmax-test f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7318,7 +7307,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrsubc-minmax-test f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7327,7 +7316,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-argmaxpool-test f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7336,7 +7325,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
+ 
+   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-avgpool-minmax-test f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7345,7 +7334,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc-test f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7354,7 +7343,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc2chw-test f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-test test/f32-dwconv.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7363,7 +7352,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-test f32-dwconv-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7372,7 +7361,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv2d-chw-test f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-minmax-test test/f32-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7381,7 +7370,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-minmax-test f32-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7390,7 +7379,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-f16-vcvt-test f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7399,7 +7388,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qs8-vcvt-test f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7408,7 +7397,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qu8-vcvt-test f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7417,7 +7406,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-cw-test f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7426,7 +7415,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-minmax-test f32-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemm-test test/f32-gemm.cc test/f32-gemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7435,7 +7424,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-test f32-gemm-test)
- 
-   ADD_EXECUTABLE(f32-gemm-relu-test test/f32-gemm-relu.cc test/f32-gemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7444,7 +7433,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-relu-test f32-gemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-gemm-minmax-test test/f32-gemm-minmax.cc test/f32-gemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7453,7 +7442,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-minmax-test f32-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemminc-minmax-test test/f32-gemminc-minmax.cc test/f32-gemminc-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7462,7 +7451,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemminc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemminc-minmax-test f32-gemminc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7471,7 +7460,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
+ 
+@@ -1975,13 +1942,13 @@
+ 
+   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-test f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7480,7 +7469,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-chw-test f32-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f32-igemm-test test/f32-igemm.cc test/f32-igemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7489,7 +7478,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-test f32-igemm-test)
- 
-   ADD_EXECUTABLE(f32-igemm-relu-test test/f32-igemm-relu.cc test/f32-igemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7498,7 +7487,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-relu-test f32-igemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-igemm-minmax-test test/f32-igemm-minmax.cc test/f32-igemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7511,7 +7500,7 @@
-     # Work-around for "too many sections" error
-     TARGET_COMPILE_OPTIONS(f32-igemm-minmax-test PRIVATE "$<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>>:-Wa,-mbig-obj>")
-   ENDIF()
--  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-minmax-test f32-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7520,7 +7509,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
+ 
+@@ -2016,13 +1983,13 @@
+ 
+   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-maxpool-minmax-test f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7529,7 +7518,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-pavgpool-minmax-test f32-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ppmm-minmax-test test/f32-ppmm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7538,7 +7527,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-ppmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-ppmm-minmax-test f32-ppmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7547,7 +7536,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
+ 
+@@ -2034,259 +2001,259 @@
+ 
+   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-prelu-test f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7556,7 +7545,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddexpminusmax-test f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7565,7 +7554,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddextexp-test f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7574,7 +7563,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddstoreexpminusmax-test f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7583,7 +7572,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-rmax-test f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7592,7 +7581,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
+ 
+   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-spmm-minmax-test f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7601,7 +7590,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vabs-test f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7610,7 +7599,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-test f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7619,7 +7608,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-minmax-test f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7628,7 +7617,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-relu-test f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7637,7 +7626,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-test f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7646,7 +7635,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-minmax-test f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7655,7 +7644,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-relu-test f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7664,7 +7653,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vclamp-test f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7673,7 +7662,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
+ 
+   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vhswish-test f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7682,7 +7671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-test f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7691,7 +7680,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-minmax-test f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7700,7 +7689,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-relu-test f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7709,7 +7698,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-test f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7718,7 +7707,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-minmax-test f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7727,7 +7716,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-relu-test f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7736,7 +7725,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-test f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7745,7 +7734,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-minmax-test f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7754,7 +7743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-relu-test f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7763,7 +7752,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-velu-test f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7772,7 +7761,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vlrelu-test f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7781,7 +7770,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmax-test f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7790,7 +7779,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmaxc-test f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7799,7 +7788,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmin-test f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7808,7 +7797,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
+ 
+   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vminc-test f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7817,7 +7806,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-test f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7826,7 +7815,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-minmax-test f32-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7835,7 +7824,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-relu-test f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7844,7 +7833,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-test f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7853,7 +7842,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-minmax-test f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7862,7 +7851,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-relu-test f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7871,7 +7860,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulcaddc-minmax-test f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7880,7 +7869,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vneg-test f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7889,7 +7878,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
+ 
+   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrelu-test f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7898,7 +7887,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndne-test f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7907,7 +7896,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
+ 
+   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndz-test f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7916,7 +7905,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
+ 
+   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndu-test f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7925,7 +7914,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndd-test f32-vrndd-test)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-test test/f32-vscaleexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7934,7 +7923,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleexpminusmax-test f32-vscaleexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-test test/f32-vscaleextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7943,7 +7932,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleextexp-test f32-vscaleextexp-test)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7952,7 +7941,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
+ 
+@@ -2304,91 +2271,91 @@
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsigmoid-test f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7961,7 +7950,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqr-test f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7970,7 +7959,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiff-test f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7979,7 +7968,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiffc-test f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7988,7 +7977,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrt-test f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7997,7 +7986,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-test f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8006,7 +7995,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-minmax-test f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8015,7 +8004,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-relu-test f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8024,7 +8013,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-test f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8033,7 +8022,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-minmax-test f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8042,7 +8031,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-relu-test f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8051,7 +8040,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-test f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8060,7 +8049,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-minmax-test f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8069,7 +8058,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-relu-test f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-minmax-fp32-test test/qc8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8078,7 +8067,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qc8-dwconv-minmax-fp32-test qc8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-gemm-minmax-fp32-test test/qc8-gemm-minmax-fp32.cc test/qc8-gemm-minmax-fp32-2.cc test/qc8-gemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8087,7 +8076,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-gemm-minmax-fp32-test qc8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-igemm-minmax-fp32-test test/qc8-igemm-minmax-fp32.cc test/qc8-igemm-minmax-fp32-2.cc test/qc8-igemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8096,7 +8085,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-igemm-minmax-fp32-test qc8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-fp32-test test/qs8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8105,7 +8094,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-fp32-test qs8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-rndnu-test test/qs8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8114,7 +8103,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-rndnu-test qs8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8123,7 +8112,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
+ 
+   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
+ 
+@@ -2406,31 +2373,31 @@
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-f32-vcvt-test qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8132,7 +8121,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-fp32-test qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8141,7 +8130,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-rndnu-test qs8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-fp32-test test/qs8-gemm-minmax-fp32.cc test/qs8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8150,7 +8139,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-fp32-test qs8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-rndnu-test test/qs8-gemm-minmax-rndnu.cc test/qs8-gemm-minmax-rndnu-2.cc test/qs8-gemm-minmax-rndnu-3.cc test/qs8-gemm-minmax-rndnu-4.cc test/qs8-gemm-minmax-rndnu-5.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8159,7 +8148,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-rndnu-test qs8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-fp32-test test/qs8-igemm-minmax-fp32.cc test/qs8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8168,7 +8157,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-fp32-test qs8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-rndnu-test test/qs8-igemm-minmax-rndnu.cc test/qs8-igemm-minmax-rndnu-2.cc test/qs8-igemm-minmax-rndnu-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8177,7 +8166,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-rndnu-test qs8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8186,7 +8175,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2461,81 +2428,81 @@
+   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-requantization-test qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8195,7 +8184,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
+ 
+   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vadd-minmax-test qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8204,7 +8193,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vaddc-minmax-test qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8213,7 +8202,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmul-minmax-fp32-test qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8222,7 +8211,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmulc-minmax-fp32-test qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-test test/qu8-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8231,7 +8220,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-avgpool-minmax-test qu8-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-fp32-test test/qu8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8240,7 +8229,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-fp32-test qu8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-rndnu-test test/qu8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8249,7 +8238,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-rndnu-test qu8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8258,7 +8247,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-f32-vcvt-test qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8267,7 +8256,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-fp32-test qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8276,7 +8265,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-rndnu-test qu8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-fp32-test test/qu8-gemm-minmax-fp32.cc test/qu8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8285,7 +8274,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-fp32-test qu8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-rndnu-test test/qu8-gemm-minmax-rndnu.cc test/qu8-gemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8294,7 +8283,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-rndnu-test qu8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-fp32-test test/qu8-igemm-minmax-fp32.cc test/qu8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8303,7 +8292,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-fp32-test qu8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-rndnu-test test/qu8-igemm-minmax-rndnu.cc test/qu8-igemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8312,7 +8301,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-rndnu-test qu8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8321,7 +8310,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2566,161 +2533,161 @@
+   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-requantization-test qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8330,7 +8319,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
+ 
+   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vadd-minmax-test qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8339,7 +8328,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vaddc-minmax-test qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8348,7 +8337,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-fp32-test qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8357,7 +8346,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-rndnu-test qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8366,7 +8355,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-fp32-test qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8375,7 +8364,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-rndnu-test qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8384,7 +8373,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
+ 
+   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
+ 
+   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
+ 
+   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
+ 
+   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
+ 
+   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-ibilinear-test s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8393,7 +8382,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-maxpool-minmax-test s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8402,7 +8391,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-vclamp-test s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8411,7 +8400,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
+ 
+   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-lut32norm-test u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8420,7 +8409,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
+ 
+   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-ibilinear-test u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8429,7 +8418,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-maxpool-minmax-test u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8438,7 +8427,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-rmax-test u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8447,7 +8436,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
+ 
+   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-vclamp-test u8-vclamp-test)
- 
-   ADD_EXECUTABLE(x8-transpose-test test/x8-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8456,7 +8445,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-transpose-test x8-transpose-test)
- 
-   ADD_EXECUTABLE(x16-transpose-test test/x16-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8465,7 +8454,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x16-transpose-test x16-transpose-test)
- 
-   ADD_EXECUTABLE(x32-packx-test test/x32-packx.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8474,7 +8463,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-packx-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-packx-test x32-packx-test)
- 
-   ADD_EXECUTABLE(x32-unpool-test test/x32-unpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8483,7 +8472,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-unpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-unpool-test x32-unpool-test)
- 
-   ADD_EXECUTABLE(x32-depthtospace2d-chw2hwc-test test/x32-depthtospace2d-chw2hwc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8492,7 +8481,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-depthtospace2d-chw2hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-depthtospace2d-chw2hwc-test x32-depthtospace2d-chw2hwc-test)
- 
-   ADD_EXECUTABLE(x32-transpose-test test/x32-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8501,7 +8490,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-transpose-test x32-transpose-test)
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8510,7 +8499,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
+ 
+@@ -2762,25 +2729,25 @@
+ 
+   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-zip-test x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8519,7 +8508,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
+ 
+   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
    TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x64-transpose-test x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8528,7 +8517,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
+ 
+   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-lut-test x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8537,7 +8526,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
+ 
+   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-zip-test x8-zip-test)
- 
-   ADD_EXECUTABLE(xx-fill-test test/xx-fill.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8546,7 +8535,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-fill-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-fill-test xx-fill-test)
- 
-   ADD_EXECUTABLE(xx-pad-test test/xx-pad.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8555,7 +8544,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-pad-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-pad-test xx-pad-test)
- 
-   ADD_EXECUTABLE(jit-test test/jit.cc)
-@@ -8682,7 +8671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
+ 
+@@ -2842,12 +2809,12 @@
+ 
+   ADD_EXECUTABLE(packing-test test/packing.cc)
+   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+ 
+   ADD_EXECUTABLE(indirection-test test/indirection.cc)
+   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+@@ -2864,7 +2831,7 @@
+   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
+-  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
+@@ -2873,134 +2840,134 @@
+   # ---[ Build accuracy microbenchmarks
+   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
+   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   # ---[ Build accuracy tests
+   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-f16-cvt-eval PROPERTIES
-@@ -8690,7 +8679,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qs8-cvt-eval PROPERTIES
-@@ -8698,7 +8687,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qu8-cvt-eval PROPERTIES
-@@ -8706,7 +8695,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-exp-eval PROPERTIES
-@@ -8714,7 +8703,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expm1minus-eval PROPERTIES
-@@ -8722,7 +8711,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expminus-eval PROPERTIES
-@@ -8730,7 +8719,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundne-eval PROPERTIES
-@@ -8738,7 +8727,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundd-eval PROPERTIES
-@@ -8746,7 +8735,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundu-eval PROPERTIES
-@@ -8754,7 +8743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundz-eval PROPERTIES
-@@ -8762,7 +8751,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo gtest gtest_main)
+-  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
  
-   # ---[ Build end-to-end microbenchmarks
-   ADD_LIBRARY(bench-models STATIC
+   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   IF(XNNPACK_BUILD_LIBRARY)
+@@ -3030,7 +2997,7 @@
+       models/qu8-mobilenet-v2.cc)
+     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
+ 
+     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
+@@ -3039,7 +3006,7 @@
+ 
+     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
+@@ -3049,33 +3016,33 @@
+ 
+     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     # ---[ Build operator-level microbenchmarks
+     ADD_EXECUTABLE(abs-bench bench/abs.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
+@@ -3083,11 +3050,11 @@
+ 
+     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
+     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
+@@ -3095,11 +3062,11 @@
+ 
+     ADD_EXECUTABLE(convert-bench bench/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
+@@ -3107,23 +3074,23 @@
+ 
+     ADD_EXECUTABLE(elu-bench bench/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(floor-bench bench/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
+@@ -3139,7 +3106,7 @@
+ 
+     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
+@@ -3161,378 +3128,378 @@
+   # ---[ Build microkernel-level microbenchmarks
+   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
+   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
+   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ ENDIF()
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 24/31] gnu: Remove xnnpack-for-torch2.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (22 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 25/31] gnu: Add qnnpack-pytorch David Elsing
                   ` (7 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (xnnpack-for-torch2): Delete variable.
* gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |    1 -
 gnu/packages/machine-learning.scm             |   28 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------------
 3 files changed, 2689 deletions(-)
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7b87bf93e5..bba56e7ebe 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2200,7 +2200,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
   %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
-  %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 35d96ac012..0cab068fbd 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4190,34 +4190,6 @@ (define-public xnnpack
 TensorFlow.js, PyTorch, and MediaPipe.")
       (license license:bsd-3))))
 
-(define-public xnnpack-for-torch2
-  ;; There's currently no tag on this repo.
-  (let ((version "0.0")
-        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
-        (revision "3"))
-    (package
-      (inherit xnnpack)
-      (name "xnnpack")
-      (version (git-version version revision commit))
-      (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
-                (patches (search-patches "xnnpack-for-torch2-system-libraries.patch"))))
-      (arguments
-       (list
-        #:tests? #false
-        #:configure-flags '(list "-DXNNPACK_USE_SYSTEM_LIBS=YES"
-                                 "-DBUILD_SHARED_LIBS=ON"
-                                 "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-                                 "-DXNNPACK_LIBRARY_TYPE=shared"
-                                 "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
-                                 "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
-
 (define-public fbgemm
   (package
     (name "fbgemm")
diff --git a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch b/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
deleted file mode 100644
index a711aa0d6c..0000000000
--- a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
+++ /dev/null
@@ -1,2660 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
-@@ -850,25 +850,8 @@
-     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
- IF(XNNPACK_BUILD_LIBRARY)
-   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
-   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
- ENDIF()
- 
-@@ -889,12 +872,6 @@
-     SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
--IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--ENDIF()
- 
- # ---[ Configure FP16
- IF(NOT TARGET fp16)
-@@ -913,17 +890,7 @@
-     SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
--TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
- IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
--
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
-   INSTALL(TARGETS XNNPACK
-       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -943,7 +910,7 @@
-   # Helper libraries
-   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
-   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
--  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
-+  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
-   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
-@@ -960,22 +927,22 @@
-     # ---[ Build operator-level unit tests
-     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
- 
-     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
- 
-     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
- 
-     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
- 
-     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -985,27 +952,27 @@
- 
-     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
- 
-     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
-@@ -1015,12 +982,12 @@
- 
-     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
- 
-     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
- 
-     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -1035,25 +1002,25 @@
- 
-     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
- 
-     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
- 
-     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
-     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
- 
-     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
- 
-     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -1068,7 +1035,7 @@
- 
-     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
- 
-     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -1083,197 +1050,197 @@
- 
-     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
- 
-     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
- 
-     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
- 
-     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
- 
-     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
- 
-     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
- 
-     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
- 
-     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
- 
-     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
- 
-     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
- 
-     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
- 
-     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
- 
-     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
- 
-     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
- 
-     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
- 
-     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
- 
-     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
- 
-     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
- 
-     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
- 
-     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
- 
-     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
- 
-     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
- 
-     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
- 
-     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
- 
-     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -1293,12 +1260,12 @@
- 
-     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
- 
-     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
- 
-     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
-@@ -1350,22 +1317,22 @@
- 
-     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
- 
-     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
- 
-     ADD_EXECUTABLE(clamp-test test/clamp.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME clamp-test COMMAND clamp-test)
- 
-     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
-@@ -1385,187 +1352,187 @@
- 
-     ADD_EXECUTABLE(convert-test test/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME convert-test COMMAND convert-test)
- 
-     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
-     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
- 
-     ADD_EXECUTABLE(copy-test test/copy.cc)
-     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME copy-test COMMAND copy-test)
- 
-     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
-     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
- 
-     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
-     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
- 
-     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
-     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
- 
-     ADD_EXECUTABLE(divide2-test test/divide2.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME divide2-test COMMAND divide2-test)
- 
-     ADD_EXECUTABLE(elu-test test/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME elu-test COMMAND elu-test)
- 
-     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
- 
-     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
- 
-     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
- 
-     ADD_EXECUTABLE(floor-test test/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME floor-test COMMAND floor-test)
- 
-     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
- 
-     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
- 
-     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
- 
-     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
- 
-     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
- 
-     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
- 
-     ADD_EXECUTABLE(negate-test test/negate.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME negate-test COMMAND negate-test)
- 
-     ADD_EXECUTABLE(prelu-test test/prelu.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME prelu-test COMMAND prelu-test)
- 
-     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
-     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
- 
-     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
-     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
-     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
- 
-     ADD_EXECUTABLE(softmax-test test/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME softmax-test COMMAND softmax-test)
- 
-     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
- 
-     ADD_EXECUTABLE(square-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-test COMMAND square-test)
- 
-     ADD_EXECUTABLE(square-root-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-root-test COMMAND square-root-test)
- 
-     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
- 
-     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
- 
-     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
- 
-     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
- 
-     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
- 
-     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
- 
-     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
-   ENDIF()
- 
-@@ -1591,355 +1558,355 @@
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
- 
-   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
- 
-   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
- 
-   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
- 
-   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
- 
-   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
- 
-   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
- 
-@@ -1975,13 +1942,13 @@
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
- 
-@@ -2016,13 +1983,13 @@
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
- 
-@@ -2034,259 +2001,259 @@
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
- 
-@@ -2304,91 +2271,91 @@
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
- 
-@@ -2406,31 +2373,31 @@
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
- 
-@@ -2461,81 +2428,81 @@
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
- 
-@@ -2566,161 +2533,161 @@
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
- 
-   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
- 
-   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
- 
-   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
- 
-   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
- 
-   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
- 
-@@ -2762,25 +2729,25 @@
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
- 
-@@ -2842,12 +2809,12 @@
- 
-   ADD_EXECUTABLE(packing-test test/packing.cc)
-   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
- 
-   ADD_EXECUTABLE(indirection-test test/indirection.cc)
-   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
- ENDIF()
- 
-@@ -2864,7 +2831,7 @@
-   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
--  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
-@@ -2873,134 +2840,134 @@
-   # ---[ Build accuracy microbenchmarks
-   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
-   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   # ---[ Build accuracy tests
-   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   IF(XNNPACK_BUILD_LIBRARY)
-@@ -3030,7 +2997,7 @@
-       models/qu8-mobilenet-v2.cc)
-     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
--    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
- 
-     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
-@@ -3039,7 +3006,7 @@
- 
-     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
-@@ -3049,33 +3016,33 @@
- 
-     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     # ---[ Build operator-level microbenchmarks
-     ADD_EXECUTABLE(abs-bench bench/abs.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
-@@ -3083,11 +3050,11 @@
- 
-     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
-     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
-@@ -3095,11 +3062,11 @@
- 
-     ADD_EXECUTABLE(convert-bench bench/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
-@@ -3107,23 +3074,23 @@
- 
-     ADD_EXECUTABLE(elu-bench bench/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(floor-bench bench/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
-@@ -3139,7 +3106,7 @@
- 
-     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
-@@ -3161,378 +3128,378 @@
-   # ---[ Build microkernel-level microbenchmarks
-   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
-   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
-   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- ENDIF()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 25/31] gnu: Add qnnpack-pytorch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (23 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
                   ` (6 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This is an internal fork of QNNPACK in the PyTorch source tree.

* gnu/packages/machine-learning.scm (%python-pytorch-version): New variable.
(%python-pytorch-src): New variable.
(qnnpack-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 127 ++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 0cab068fbd..eed649f118 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4310,6 +4310,133 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define %python-pytorch-version "2.2.1")
+
+(define %python-pytorch-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-version))))
+    (file-name (git-file-name "python-pytorch" %python-pytorch-version))
+    (sha256
+     (base32
+      "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (modules '((guix build utils)))
+    (snippet
+     '(begin
+        ;; Bundled or unused code
+        (for-each
+         (lambda (dir)
+           (when (file-exists? dir)
+             (delete-file-recursively dir)))
+         '("android"
+           "aten/src/ATen/native/cuda/cutlass_extensions"
+           "aten/src/ATen/native/quantized/cpu/qnnpack"
+           "caffe2/mobile/contrib/libopencl-stub"
+           "caffe2/mobile/contrib/libvulkan-stub"
+           "third_party"))
+
+        ;; Autogenerated files
+        (for-each
+         delete-file
+         '("aten/src/ATen/nnapi/nnapi_wrapper.cpp"
+           "aten/src/ATen/nnapi/nnapi_wrapper.h"
+           "caffe2/mobile/contrib/ios/mpscnn/mpscnn_kernels.h"
+           "caffe2/proto/caffe2_legacy_pb2.pyi"
+           "caffe2/proto/caffe2_pb2.pyi"
+           "caffe2/proto/hsm_pb2.pyi"
+           "caffe2/proto/metanet_pb2.pyi"
+           "caffe2/proto/predictor_consts_pb2.pyi"
+           "caffe2/proto/prof_dag_pb2.pyi"
+           "caffe2/proto/torch_pb2.pyi"
+           ;; These files contain just lists of floating point values and
+           ;; might be as well hand-written.
+           ;; "test/cpp/api/init_baseline.h"
+           ;; "test/cpp/api/optim_baseline.h"
+           "test/mobile/test_upgrader_bytecode_table_example.cpp"
+           "torch/csrc/jit/mobile/upgrader_mobile.cpp"
+           "torch/csrc/jit/runtime/decomposition_registry_util.cpp"
+           "torch/csrc/jit/runtime/serialized_shape_function_registry.cpp"
+           "torch/csrc/jit/tensorexpr/external_functions_codegen.cpp"
+           "torch/csrc/jit/serialization/mobile_bytecode_generated.h"))
+        (delete-file-recursively ".github")
+        (for-each
+         (lambda (dir)
+           (for-each
+            delete-file
+            (find-files dir "\\.cu$")))
+         '("aten/src/ATen/native/transformers/cuda/flash_attn/kernels"
+           "aten/src/ATen/native/transformers/cuda/mem_eff_attention/kernels"))))))
+
+(define-public qnnpack-pytorch
+  (package
+    (inherit qnnpack)
+    (name "qnnpack-pytorch")
+    (version (string-append "pytorch-" %python-pytorch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        '(begin
+           (rename-file "aten/src/ATen/native/quantized/cpu/qnnpack"
+                        "../qnnpack")
+           (let ((outdir (getcwd)))
+             (chdir "..")
+             (rename-file outdir "dummy")
+             (rename-file "qnnpack" outdir)
+             (chdir outdir)
+             (delete-file-recursively "deps"))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qnnpack)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("project\\(.*" orig)
+                   (apply
+                    string-append
+                    orig "\n"
+                    (map (lambda (name)
+                           (string-append
+                            "option(" name " \"\" ON)\n"))
+                         '("USE_SYSTEM_CPUINFO" "USE_SYSTEM_FP16" "USE_SYSTEM_FXDIV"
+                           "USE_SYSTEM_PSIMD" "USE_SYSTEM_PTHREADPOOL"))))
+                  (("if.*SOURCE_DIR.*")
+                   "if(FALSE)\n")
+                  (("if\\(NOT TARGET (clog|gtest|benchmark).*")
+                   "if(FALSE)\n")
+                  (("target_link_libraries.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(target_link_libraries.*) fp16 (.*)" _ before after)
+                   (string-append before " " after)))))
+            (add-after 'unpack 'fix-cstring-include
+              (lambda _
+                (substitute* "include/pack_block_sparse.h"
+                  (("#include.*<vector>.*" orig)
+                   (string-append orig "\n#include <cstring>\n")))))
+            (add-after 'install 'install-missing-headers
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (install-file (string-append "../source/include/" name)
+                                 (string-append #$output "/include")))
+                 '("pack_block_sparse.h"
+                   "pytorch_qnnpack.h"
+                   "qnnpack_func.h"))
+                (copy-recursively
+                 "../source/src/qnnpack"
+                 (string-append #$output "/include/qnnpack"))))))
+       ;; Some tests occasionally fail on i686 due to floating point rounding.
+       ((#:tests? _ #t)
+        (not (string-prefix? "i686" (or (%current-target-system)
+                                        (%current-system)))))))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (24 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 25/31] gnu: Add qnnpack-pytorch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
                   ` (5 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

Autogenerated files are also regenerated. The tests can be run, but are
disabled, as they require a long time.

* gnu/packages/machine-learning.scm (python-pytorch): Update to 2.2.1.
[version]: Use %python-pytorch-version.
[source]: Use %python-pytorch-src.
[arguments]: Remove 'make-things-writable phase.  Add 'cmake-patches,
'set-max-jobs, 'codegen1, 'codegen2, 'build2, 'install2 phases. Adjust
'use-system-libraries and 'check phases.
[native-inputs]: Add doxygen, ideep-pytorch, pocketfft-cpp, python-expecttest,
python-pytest-flakefinder, python-pytest-rerunfailures-13,
python-pytest-shard, python-pytest-xdist, python-hypothesis,
python-types-dataclasses, python-typing-extensions-4.10 and valgrind.
[inputs]: Add asmjit, clog, flatbuffers-next, foxi, fxdiv, libuv,
miniz-for-pytorch, qnnpack, qnnpack-pytorch, fbgemm and oneapi-dnnl. Use
nnpack, fbgemm and oneapi-dnnl only for supported systems.
[propagated-inputs]: Add python-filelock, python-fsspec, python-jinja2,
python-networkx, python-optree, python-packaging, python-psutil and
python-sympy. Remove python-cffi and python-six.
(%python-pytorch-src)[source]: Add patches.
* gnu/packages/patches/python-pytorch-runpath.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-system-libraries.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch: Remove file.
* gnu/packages/patches/python-pytorch-fix-codegen.patch: New file.
* gnu/packages/patches/python-pytorch-without-kineto: New file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   2 +-
 gnu/packages/machine-learning.scm             | 318 ++++++++++-------
 ...ython-pytorch-1.9.0-system-libraries.patch | 139 --------
 .../patches/python-pytorch-fix-codegen.patch  | 167 +++++++++
 .../patches/python-pytorch-runpath.patch      |  19 +-
 .../python-pytorch-system-libraries.patch     | 324 +++++++++++++++---
 .../python-pytorch-without-kineto.patch       |  60 ++++
 7 files changed, 720 insertions(+), 309 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index bba56e7ebe..84eeb39c8b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1927,7 +1927,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
   %D%/packages/patches/python-pytorch-runpath.patch		\
   %D%/packages/patches/python-pytorch-system-libraries.patch	\
-  %D%/packages/patches/python-pytorch-1.9.0-system-libraries.patch \
+  %D%/packages/patches/python-pytorch-without-kineto.patch	\
   %D%/packages/patches/python-robotframework-atest.patch	\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index eed649f118..f5e19bcaff 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -104,6 +104,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -122,6 +123,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
@@ -4322,6 +4324,13 @@ (define %python-pytorch-src
     (sha256
      (base32
       "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (patches (search-patches "python-pytorch-system-libraries.patch"
+                             "python-pytorch-runpath.patch"
+                             "python-pytorch-without-kineto.patch"
+                             ;; Some autogeneration scripts depend on the
+                             ;; compile PyTorch library. Therefore, we create
+                             ;; dummy versions which are regenerated later.
+                             "python-pytorch-fix-codegen.patch"))
     (modules '((guix build utils)))
     (snippet
      '(begin
@@ -4441,135 +4450,204 @@ (define-public qnnpack-pytorch
 (define-public python-pytorch
   (package
     (name "python-pytorch")
-    (version "1.13.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "17yxjzwp4zp75fz7czgz9acijzw7dpyqcza50v8y1x7hfg2gw369"))
-              (patches (search-patches "python-pytorch-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-version)
+    (source %python-pytorch-src)
     (build-system python-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'use-system-libraries
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
-                      ;; want to use "system libraries" instead of the bundled
-                      ;; ones.
-                      (setenv "USE_SYSTEM_LIBS" "1")
-
-                      (substitute* "cmake/Dependencies.cmake"
-                        (("if\\(USE_SYSTEM_BIND11\\)")
-                         "if(TRUE)"))
-
-                      ;; XXX: Disable that for simplicity for now.
-                      (setenv "USE_FBGEMM" "0")))
-                  (add-before 'build 'make-things-writable
-                    (lambda _
-                      ;; The 'build_caffe2' function in
-                      ;; 'tools/build_pytorch_libs.py', called from the
-                      ;; top-level 'setup.py', needs write access to this
-                      ;; directory.
-                      (for-each make-file-writable
-                                (find-files "caffe2/proto" "."
-                                            #:directories? #t))))
-                  (replace 'check
-                    (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-                      ;; Run the test suite following the instructions in
-                      ;; 'CONTRIBUTING.md'.  XXX: Unfortunately this doesn't
-                      ;; work, unless you set GUIX_PYTHONPATH presumably.
-                      (when tests?
-                        (add-installed-pythonpath inputs outputs)
-                        (invoke "python" "test/run_test.py"))))
-                  (add-after 'install 'remove-test-executables
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Remove test executables, but keep other executables
-                      ;; such as 'torch_shm_manager' and and .so files such as
-                      ;; 'libtorch_global_deps.so'.
-                      (let ((python-site (site-packages inputs outputs)))
-                        (for-each delete-file
-                                  (find-files python-site
-                                              "(^test_cpp_rpc|_test)$")))))
-                  (add-after 'install 'remove-caffe2-onnx-scripts
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (bin (string-append out "/bin")))
-                        ;; Remove 'convert-caffe2-to-onnx' and
-                        ;; 'convert-onnx-to-caffe2': they seem to be
-                        ;; deprecated and they cause a failure of the
-                        ;; 'sanity-check' phase:
-                        ;;
-                        ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
-                        (for-each delete-file
-                                  (find-files bin "^convert-.*caffe2"))
-
-                        (substitute* (find-files out "^entry_points\\.txt$")
-                          (("^convert-.*" all)
-                           (string-append "# " all "\n")))))))
-
-       ;; XXX: Tests attempt to download data such as
-       ;; <https://raw.githubusercontent.com/pytorch/test-infra/master/stats/slow-tests.json>.
-       ;; We're also missing some Python modules, such as expecttest.
-       #:tests? #f))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'cmake-patches
+            (lambda _
+              (substitute* "cmake/Dependencies.cmake"
+                (("#POCKETFFT_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-native-input "pocketfft-cpp") "/include"))
+                (("#FP16_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-input "fp16") "/include")))))
+          (add-before 'build 'use-system-libraries
+            (lambda _
+              (substitute* '("caffe2/serialize/crc.cc"
+                             "caffe2/serialize/inline_container.cc")
+                (("\"miniz\\.h\"") "<miniz/miniz.h>"))
+              (substitute*
+                  (cons*
+                   "torch/csrc/Module.cpp"
+                   (map
+                    (lambda (name)
+                      (string-append
+                       "torch/utils/benchmark/utils/valgrind_wrapper/"
+                       name))
+                    '("compat_bindings.cpp" "timer_callgrind_template.cpp")))
+                (("<callgrind.h>") "<valgrind/callgrind.h>"))
+              ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
+              ;; want to use "system libraries" instead of the bundled
+              ;; ones.
+              (setenv "USE_SYSTEM_LIBS" "1")
+              ;; For oneDNN
+              (setenv "USE_MKLDNN" "1")
+              ;; Only works with CUPTI
+              (setenv "USE_KINETO" "0")
+              ;; Prevent CMake error by disabling explicitely
+              (setenv "USE_ITT" "0")))
+          (add-after 'use-system-libraries 'set-max-jobs
+            (lambda _
+              (setenv "MAX_JOBS" (number->string (parallel-job-count)))))
+          (add-after 'set-max-jobs 'codegen1
+            (lambda _
+              (with-directory-excursion "torch/csrc/jit/tensorexpr"
+                (setenv "PYTHONPATH" "../../../..")
+                (invoke "python3" "codegen_external.py")
+                (setenv "PYTHONPATH" #f))
+
+              (invoke "python3" "aten/src/ATen/nnapi/codegen.py")
+
+              (invoke "bash" "tools/gen_flatbuffers.sh")
+
+              ;; Generate dummy files as the generation depends on the compiled
+              ;; library. They are regenerated later.
+              (setenv "PYTHONPATH" ".")
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py"
+                      "dummy")
+              (setenv "PYTHONPATH" #f)
+
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py"
+                      "dummy")
+
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py"
+                      "dummy")))
+          ;; Properly generate autogenerated files ...
+          (add-after 'install 'codegen2
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (add-installed-pythonpath inputs outputs)
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py")
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py")
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py")))
+          ;; ... rebuild their dependencies ...
+          (add-after 'codegen2 'build2
+            (lambda _
+              (invoke "python3" "setup.py" "build")))
+          ;; ... and install again.
+          (add-after 'build2 'install2
+            (lambda _
+              (invoke "python3" "setup.py" "install" (string-append "--prefix=" #$output)
+                      "--no-compile" "--single-version-externally-managed" "--root=/")
+              (invoke "python" "-m" "compileall"
+                      "--invalidation-mode=unchecked-hash" #$output)))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Run the test suite following the instructions in
+              ;; 'CONTRIBUTING.md'. Unfortunately this doesn't work, unless
+              ;; you set PYTHONPATH or GUIX_PYTHONPATH, but this is done in
+              ;; the codegen2 phase already.
+              (when tests?
+                (invoke "python3" "test/run_test.py" "--core"))))
+          (add-after 'install2 'remove-test-executables
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Remove test executables, but keep other executables
+              ;; such as 'torch_shm_manager' and and .so files such as
+              ;; 'libtorch_global_deps.so'.
+              (let ((python-site (site-packages inputs outputs)))
+                (for-each delete-file
+                          (find-files python-site
+                                      "(^test_cpp_rpc|_test)$")))))
+          (add-after 'install2 'remove-caffe2-onnx-scripts
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (bin (string-append out "/bin")))
+                ;; Remove 'convert-caffe2-to-onnx' and
+                ;; 'convert-onnx-to-caffe2': they seem to be
+                ;; deprecated and they cause a failure of the
+                ;; 'sanity-check' phase:
+                ;;
+                ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
+                (for-each delete-file
+                          (find-files bin "^convert-.*caffe2"))
+
+                (substitute* (find-files out "^entry_points\\.txt$")
+                  (("^convert-.*" all)
+                   (string-append "# " all "\n")))))))
+
+      ;; Even only the core tests take a very long time to run.
+      #:tests? #f))
     (native-inputs
-     (list cmake ninja))
+     (list cmake
+           doxygen
+           ideep-pytorch
+           ninja
+           pocketfft-cpp
+           python-expecttest
+           python-pytest-flakefinder
+           python-pytest-rerunfailures-13
+           python-pytest-shard
+           python-pytest-xdist
+           python-hypothesis
+           python-types-dataclasses
+           python-typing-extensions-4.10
+           valgrind))
     (inputs
-     (list eigen
-           ;; ("fmt" ,fmt)
-           fp16
-           gemmlowp
-           googletest
-           googlebenchmark
-           gloo
-           nnpack
-           openblas
-           openmpi
-           pthreadpool
-           protobuf
-           pybind11
-           sleef
-           xnnpack
-           zstd))
+     (append
+      (list asmjit
+            clog
+            eigen
+            flatbuffers-next
+            fmt
+            foxi
+            fp16
+            fxdiv
+            gemmlowp
+            googletest
+            googlebenchmark
+            gloo
+            libuv
+            miniz-for-pytorch
+            openblas
+            openmpi
+            pthreadpool
+            protobuf
+            pybind11
+            qnnpack
+            qnnpack-pytorch
+            sleef
+            tensorpipe
+            xnnpack
+            zstd)
+      ;; TODO: fix build on 32 bit systems
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list
+        nnpack
+        fbgemm
+        oneapi-dnnl))))
     (propagated-inputs
-     (list python-astunparse
+     (list cpuinfo
+           onnx ;propagated for its Python modules
+           onnx-optimizer
+           python-astunparse
            python-click
+           python-filelock
+           python-fsspec
+           python-future
+           python-jinja2
+           python-networkx
            python-numpy
+           python-optree
+           python-packaging
+           python-psutil
            python-pyyaml
-           python-cffi
-           python-typing-extensions
-           python-future
-           python-six
            python-requests
-           onnx                             ;propagated for its Python modules
-           onnx-optimizer
-           cpuinfo))
+           python-sympy
+           python-typing-extensions))
     (home-page "https://pytorch.org/")
     (synopsis "Python library for tensor computation and deep neural networks")
     (description
diff --git a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch b/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
deleted file mode 100644
index 76c06520f0..0000000000
--- a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 5d57b9ca78..620cca4e60 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -644,11 +644,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1485,7 +1480,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 50ebb224ce..5953d9ddf7 100644
---- a/caffe2/CMakeLists.txt
-+++ b/caffe2/CMakeLists.txt
-@@ -1632,7 +1632,7 @@ if(BUILD_TEST)
-         if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
-           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
-           if(USE_FBGEMM)
-             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
-           endif()
-@@ -1655,7 +1655,7 @@ if(BUILD_TEST)
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1673,7 +1673,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       cuda_add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1691,7 +1691,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1709,7 +1709,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
-
-diff --git a/torch/lib/c10d/test/CMakeLists.txt b/torch/lib/c10d/test/CMakeLists.txt
-index b74d4b65f7..fc7c207505 100644
---- a/torch/lib/c10d/test/CMakeLists.txt
-+++ b/torch/lib/c10d/test/CMakeLists.txt
-@@ -16,24 +16,24 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp c10d gtest_main)
--c10d_add_test(TCPStoreTest.cpp c10d gtest_main)
-+c10d_add_test(FileStoreTest.cpp c10d gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp c10d gtest_main gtest)
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp c10d gtest_main)
-+  c10d_add_test(HashStoreTest.cpp c10d gtest_main gtest)
- endif()
- 
- if(USE_CUDA)
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main)
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main gtest)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_C10D_NCCL)
--    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main gtest)
-     c10d_add_test(ProcessGroupNCCLErrorsTest.cpp c10d c10d_cuda_test
--        gtest_main)
-+        gtest_main gtest)
-   endif()
- else()
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main gtest)
-   endif()
- endif()
-
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cbb5..6075bdd0a4 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
diff --git a/gnu/packages/patches/python-pytorch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-fix-codegen.patch
new file mode 100644
index 0000000000..cb246b25de
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index bc69b05162..0f8df81de3 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -20,9 +20,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -62,7 +67,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index dab1568580..55c58715fc 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = dict(sorted_version_map_)
+ 
+@@ -378,7 +383,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ 
+ def main() -> None:
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-runpath.patch b/gnu/packages/patches/python-pytorch-runpath.patch
index 7f95b88a2b..2c1724cdb0 100644
--- a/gnu/packages/patches/python-pytorch-runpath.patch
+++ b/gnu/packages/patches/python-pytorch-runpath.patch
@@ -3,10 +3,10 @@ get installed, quite surprisingly, to 'lib/python3.8/site-packages/{bin,lib}'.
 Make sure RUNPATH matches that.
 
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 5b5622f0..30d27e57 100644
+index 74836372..c8eb69d1 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1909,7 +1909,7 @@ if(BUILD_PYTHON)
+@@ -1910,7 +1910,7 @@ if(BUILD_PYTHON)
    if(${BUILDING_WITH_TORCH_LIBS})
      # site-packages/caffe2/python/caffe2_pybind11_state
      # site-packages/torch/lib
@@ -16,7 +16,7 @@ index 5b5622f0..30d27e57 100644
  
    # Must also include `CMAKE_SHARED_LINKER_FLAGS` in linker flags for
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index ee9cf410..f190e69b 100644
+index acc95842..8f8fb7d7 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
 @@ -4,7 +4,7 @@ if(APPLE)
@@ -28,3 +28,16 @@ index ee9cf410..f190e69b 100644
  endif(APPLE)
  # Use separate rpaths during build and install phases
  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
+diff --git a/functorch/CMakeLists.txt b/functorch/CMakeLists.txt
+index f2f32745..db21b656 100644
+--- a/functorch/CMakeLists.txt
++++ b/functorch/CMakeLists.txt
+@@ -21,7 +21,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE pybind::pybind11)
+ 
+ set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+       ${CMAKE_BINARY_DIR}/functorch)
+-set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${_rpath_portable_origin}/../torch/lib")
++set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../torch/lib")
+ 
+ # Copy-pasted prefix/suffix logic for Python extensions from
+ # https://github.com/pytorch/pytorch/blob/33bb8ae350611760139457b85842b1d7edf9aa11/caffe2/CMakeLists.txt#L1975
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
index fd849fd9e2..676b96eb71 100644
--- a/gnu/packages/patches/python-pytorch-system-libraries.patch
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -1,60 +1,163 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
 
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 2c2b9674..5ac5fa6e 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -371,9 +371,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x|ppc64le)$")
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index d57d7ebb..5b5622f0 100644
+index 74836372..b01fd143 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1736,7 +1736,7 @@ if(BUILD_TEST)
+@@ -111,9 +111,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -1055,7 +1052,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1396,6 +1392,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ if(USE_MPI)
+   target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX)
+ endif()
+@@ -1653,7 +1650,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1680,7 +1677,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1701,7 +1698,7 @@ if(BUILD_TEST)
          if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
            # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
 -          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
 +          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
            if(USE_FBGEMM)
              target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
            endif()
-@@ -1759,7 +1759,7 @@ if(BUILD_TEST)
+@@ -1715,7 +1712,7 @@ if(BUILD_TEST)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1732,7 +1729,7 @@ if(BUILD_TEST)
    foreach(test_src ${Caffe2_CPU_TEST_SRCS})
      get_filename_component(test_name ${test_src} NAME_WE)
      add_executable(${test_name} "${test_src}")
 -    target_link_libraries(${test_name} torch_library gtest_main)
 +    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     if(USE_OPENMP)
-       # -fopenmp is a compile time flag and as result not guaranteed
-       # to link executable against OpenMP runtime library
-@@ -1785,7 +1785,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1803,7 +1803,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1821,7 +1821,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59d..67e1a9a1 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
+index acc95842..97275bfe 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+@@ -283,7 +283,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -489,19 +489,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -550,13 +537,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -728,11 +708,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
    # this shouldn't be necessary anymore.
    get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
    set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
@@ -66,7 +169,49 @@ index 557ab649..ee9cf410 100644
  
    # We will not need to test benchmark lib itself.
    set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+@@ -810,16 +785,6 @@ if(USE_FBGEMM)
+     if(USE_ASAN)
+       set(USE_SANITIZER "address,undefined" CACHE STRING "-fsanitize options for FBGEMM")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -979,7 +944,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1362,7 +1327,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1529,7 +1493,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1560,7 +1523,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
      endif()
      set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
      message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
@@ -75,8 +220,36 @@ index 557ab649..ee9cf410 100644
    endif()
    include_directories(${FOXI_INCLUDE_DIRS})
    list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1739,9 +1702,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1796,7 +1758,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1805,7 +1767,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
 diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
+index 9d5f0643..c3624e58 100644
 --- a/cmake/External/nnpack.cmake
 +++ b/cmake/External/nnpack.cmake
 @@ -40,7 +40,7 @@ endif()
@@ -88,7 +261,7 @@ index a41343cb..6075bdd0 100644
    message(STATUS "Brace yourself, we are building NNPACK")
    set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
  
-@@ -114,6 +114,5 @@ endif()
+@@ -112,6 +112,5 @@ endif()
  # (4) Catch-all: not supported.
  ##############################################################################
  
@@ -97,8 +270,45 @@ index a41343cb..6075bdd0 100644
 -set(USE_NNPACK OFF)
 +set(NNPACK_FOUND TRUE)
 +set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 87935625..9f8fa3df 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,4 +15,4 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+diff --git a/setup.py b/setup.py
+index 81f3c6cb..3251cab5 100644
+--- a/setup.py
++++ b/setup.py
+@@ -482,13 +482,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         "tools/shared/_utils_internal.py",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h",
+     ]
+     orig_files = [
+         "torch/_utils_internal.py",
+-        "third_party/valgrind-headers/callgrind.h",
+-        "third_party/valgrind-headers/valgrind.h",
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
 diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
+index 5c897483..ef84c571 100644
 --- a/test/cpp/c10d/CMakeLists.txt
 +++ b/test/cpp/c10d/CMakeLists.txt
 @@ -16,14 +16,14 @@ function(c10d_add_test test_src)
@@ -133,7 +343,29 @@ index bf91460c..ef56948f 100644
    endif()
    if(USE_NCCL AND USE_C10D_NCCL)
      # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
    endif()
  else()
    if(USE_GLOO AND USE_C10D_GLOO)
@@ -143,10 +375,10 @@ index bf91460c..ef56948f 100644
  endif()
  
 diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
+index 012471d0..d39b625e 100644
 --- a/test/cpp/tensorexpr/CMakeLists.txt
 +++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
  # pthreadpool header. For some build environment we need add the dependency
  # explicitly.
  if(USE_PTHREADPOOL)
@@ -154,4 +386,4 @@ index 8fc5a0a1..643202f6 100644
 +  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
  endif()
  if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
+   target_compile_definitions(test_tensorexpr PRIVATE USE_CUDA)
diff --git a/gnu/packages/patches/python-pytorch-without-kineto.patch b/gnu/packages/patches/python-pytorch-without-kineto.patch
new file mode 100644
index 0000000000..f956316866
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-without-kineto.patch
@@ -0,0 +1,60 @@
+Even when building without Kineto, the <ActivityType.h> header is still
+imported and the ActivityType type is used. This patch was copied from
+https://github.com/pytorch/pytorch/pull/111048.
+
+diff --git a/torch/csrc/profiler/kineto_shim.h b/torch/csrc/profiler/kineto_shim.h
+index e92cbf00..68985ab7 100644
+--- a/torch/csrc/profiler/kineto_shim.h
++++ b/torch/csrc/profiler/kineto_shim.h
+@@ -12,7 +12,51 @@
+ #undef USE_KINETO
+ #endif
+ 
++#ifdef USE_KINETO
+ #include <ActivityType.h>
++#else
++namespace libkineto {
++// copied from header
++/*
++ * Copyright (c) Meta Platforms, Inc. and affiliates.
++ * All rights reserved.
++ *
++ * This source code is licensed under the BSD-style license found in the
++ * LICENSE file in the root directory of this source tree.
++ */
++
++// Note : All activity types are not enabled by default. Please add them
++// at correct position in the enum
++enum class ActivityType {
++    // Activity types enabled by default
++    CPU_OP = 0, // cpu side ops
++    USER_ANNOTATION,
++    GPU_USER_ANNOTATION,
++    GPU_MEMCPY,
++    GPU_MEMSET,
++    CONCURRENT_KERNEL, // on-device kernels
++    EXTERNAL_CORRELATION,
++    CUDA_RUNTIME, // host side cuda runtime events
++    CUDA_DRIVER, // host side cuda driver events
++    CPU_INSTANT_EVENT, // host side point-like events
++    PYTHON_FUNCTION,
++    OVERHEAD, // CUPTI induced overhead events sampled from its overhead API.
++
++    // Optional Activity types
++    CUDA_SYNC, // synchronization events between runtime and kernels
++    GLOW_RUNTIME, // host side glow runtime events
++    MTIA_RUNTIME, // host side MTIA runtime events
++    CUDA_PROFILER_RANGE, // CUPTI Profiler range for performance metrics
++    MTIA_CCP_EVENTS, // MTIA ondevice CCP events
++    HPU_OP, // HPU host side runtime event
++    XPU_RUNTIME, // host side xpu runtime events
++
++    ENUM_COUNT, // This is to add buffer and not used for any profiling logic. Add your new type before it.
++    OPTIONAL_ACTIVITY_TYPE_START = CUDA_SYNC,
++};
++}
++
++#endif
+ 
+ #include <torch/csrc/Export.h>
+ #include <torch/csrc/profiler/api.h>
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 27/31] gnu: python-torchvision: Update to 0.17.1.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (25 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
                   ` (4 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-torchvision): Update to 0.17.1.
[source]: Add snippet to remove "android" and "ios" directories.
---
 gnu/packages/machine-learning.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index f5e19bcaff..02e9d6758f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5118,7 +5118,7 @@ (define-public python-torchmetrics
 (define-public python-torchvision
   (package
     (name "python-torchvision")
-    (version "0.15.2")
+    (version "0.17.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5128,7 +5128,12 @@ (define-public python-torchvision
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cq2s13vkgg9rljjbrm4g33yxq7q5zqp7f4xm5cq624gvs0wxmi8"))))
+                "094jz0ryzh0yjxf687r61r482fdh3bax8ix2csghraps0z1sns1b"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "android")
+                  (delete-file-recursively "ios")))))
     (build-system pyproject-build-system)
     (arguments
      (list #:tests? #false)) ;the test suite is expensive and there is no easy
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 28/31] gnu: Add ideep-pytorch-for-r-torch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (26 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
                   ` (3 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 02e9d6758f..64b62e86d4 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4312,6 +4312,21 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define-public ideep-pytorch-for-r-torch
+  (package
+    (inherit ideep-pytorch)
+    (version "2.7.3-1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name (package-name ideep-pytorch) version))
+       (sha256
+        (base32
+         "0hdpkhcjry22fjx2zg2r48v7f4ljrclzj0li2pgk76kvyblfbyvm"))))))
+
 (define %python-pytorch-version "2.2.1")
 
 (define %python-pytorch-src
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 29/31] gnu: Add oneapi-dnnl-for-r-torch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (27 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
                   ` (2 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 64b62e86d4..0c46a1ba1f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5833,6 +5833,20 @@ (define-public oneapi-dnnl
     (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
+(define-public oneapi-dnnl-for-r-torch
+  (package
+    (inherit oneapi-dnnl)
+    (version "2.7.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oneapi-src/oneDNN")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name oneapi-dnnl) version))
+       (sha256
+        (base32 "1zyw5rd8x346bb7gac9a7x3saviw3zvp6aqz2z1l9sv163vmjfz6"))))))
+
 (define-public python-gguf
   (package
     (name "python-gguf")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 30/31] gnu: Add qnnpack-pytorch-for-r-torch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (28 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-06 19:40 ` [bug#69591] [PATCH 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-version): New
variable.
(%python-pytorch-for-r-torch-src): New variable.
(qnnpack-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 0c46a1ba1f..4413ecad13 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4679,6 +4679,34 @@ (define-public python-pytorch
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
+(define %python-pytorch-for-r-torch-version "2.0.1")
+
+(define %python-pytorch-for-r-torch-src
+  (origin
+    (inherit %python-pytorch-src)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-for-r-torch-version))))
+    (file-name (git-file-name "python-pytorch"
+                              %python-pytorch-for-r-torch-version))
+    (sha256
+     (base32
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+
+(define-public qnnpack-pytorch-for-r-torch
+  (package
+    (inherit qnnpack-pytorch)
+    (version (string-append "pytorch-" %python-pytorch-for-r-torch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-for-r-torch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        (origin-snippet (package-source qnnpack-pytorch)))))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (29 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
@ 2024-03-06 19:40 ` David Elsing
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-06 19:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-src): Add
patches.
(python-pytorch-for-r-torch)[version]: Use
%python-pytorch-for-r-torch-version.
[source]: Use %python-pytorch-for-r-torch-src.
[native-inputs]: Use 'modify-inputs'.
[inputs]: Don't replace xnnpack. Replace qnnpack-pytorch with
qnnpack-pytorch-for-r-torch and oneapi-dnnl with oneapi-dnnl-for-r-torch.
[propagated-inputs]: Don't replace onnx and onnx-optimizer.
[supported-systems]: New field.
* gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen: New file.
* gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch: New file.
* gnu/packages/patches/python-pytorch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/machine-learning.scm             |  61 +--
 ...thon-pytorch-for-r-torch-fix-codegen.patch | 167 ++++++++
 ...pytorch-for-r-torch-system-libraries.patch | 390 ++++++++++++++++++
 .../python-pytorch2-system-libraries.patch    | 156 -------
 5 files changed, 576 insertions(+), 199 deletions(-)
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 84eeb39c8b..6b3af883b6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1809,7 +1809,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyreadstat-link-libiconv.patch	\
   %D%/packages/patches/python-pyls-black-41.patch		\
   %D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch	\
-  %D%/packages/patches/python-pytorch2-system-libraries.patch	\
   %D%/packages/patches/python-sip-include-dirs.patch	\
   %D%/packages/patches/python-sgmllib3k-assertions.patch	\
   %D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 4413ecad13..f85e0b5a93 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4691,7 +4691,15 @@ (define %python-pytorch-for-r-torch-src
                               %python-pytorch-for-r-torch-version))
     (sha256
      (base32
-      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))
+    (patches (search-patches
+              "python-pytorch-for-r-torch-system-libraries.patch"
+              "python-pytorch-runpath.patch"
+              "python-pytorch-without-kineto.patch"
+              ;; Some autogeneration scripts depend on the
+              ;; compile PyTorch library. Therefore, we create
+              ;; dummy versions which are regenerated later.
+              "python-pytorch-for-r-torch-fix-codegen.patch"))))
 
 (define-public qnnpack-pytorch-for-r-torch
   (package
@@ -4707,59 +4715,28 @@ (define-public qnnpack-pytorch-for-r-torch
        (snippet
         (origin-snippet (package-source qnnpack-pytorch)))))))
 
+;; Keep in sync with r-torch
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
     (name "python-pytorch")
-    (version "2.0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14m7v54zyd2qg2xk9mqdpbf4ps7091mdzinzh4vq9p5k4bpznj65"))
-              (patches (search-patches "python-pytorch2-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "caffe2/CMakeLists.txt"
-                    (("target_link_libraries\\(\\$\\{test_name\\}_\\$\\{CPU_CAPABILITY\\} c10 sleef gtest_main\\)")
-                     "target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest gtest_main)"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-for-r-torch-version)
+    (source %python-pytorch-for-r-torch-src)
+    (native-inputs
+     (modify-inputs (package-native-inputs python-pytorch)
+       (replace "ideep-pytorch" ideep-pytorch-for-r-torch)))
     (inputs
      (modify-inputs (package-inputs python-pytorch)
-       (replace "xnnpack" xnnpack-for-torch2)))
+       (replace "qnnpack-pytorch" qnnpack-pytorch-for-r-torch)
+       (replace "oneapi-dnnl" oneapi-dnnl-for-r-torch)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
                python-jinja2
                python-networkx
                python-opt-einsum
-               python-sympy)
-       (replace "onnx" onnx-for-torch2)
-       (replace "onnx-optimizer" onnx-optimizer-for-torch2)))))
+               python-sympy)))
+    (supported-systems %64bit-supported-systems)))
 
 (define-public python-pytorch-geometric
   (package
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
new file mode 100644
index 0000000000..8515e5ab13
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index 120520b139..0c8587f02d 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -16,9 +16,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -48,7 +53,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index e5287cffc5..57f3c38096 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = {name: lst for name, lst in sorted_version_map_}
+ 
+@@ -379,7 +384,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ def main() -> None:
+ 
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
new file mode 100644
index 0000000000..6e448ce5c5
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
@@ -0,0 +1,390 @@
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
+
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 96fc29782b..7f27b6654b 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -362,9 +362,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
+ 
+diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
+index 221e3f32b2..3bad9d2f9e 100644
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -110,9 +110,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -975,7 +972,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1314,6 +1310,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ target_include_directories(torch_cpu INTERFACE $<INSTALL_INTERFACE:include>)
+ target_include_directories(torch_cpu PRIVATE ${Caffe2_CPU_INCLUDE})
+ target_include_directories(torch_cpu SYSTEM PRIVATE "${Caffe2_DEPENDENCY_INCLUDE}")
+@@ -1570,7 +1567,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1601,7 +1598,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1622,13 +1619,13 @@ if(BUILD_TEST)
+         if(NOT MSVC)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
+           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
+           if(USE_FBGEMM)
+             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1645,7 +1642,7 @@ if(BUILD_TEST)
+   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59d0d..67e1a9a1a3 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 8c0e3c24bc..d65576ada2 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -298,7 +298,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -501,19 +501,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -562,13 +549,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -750,11 +730,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+   # this shouldn't be necessary anymore.
+   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
+-  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
+-
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
+ 
+   # We will not need to test benchmark lib itself.
+   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
+@@ -829,16 +804,6 @@ if(USE_FBGEMM)
+     else()
+       set(FBGEMM_LIBRARY_TYPE "static" CACHE STRING "")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -1001,7 +966,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1395,7 +1360,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1551,7 +1515,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1582,7 +1545,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+     endif()
+     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
+     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
+-    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
++    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
+   endif()
+   include_directories(${FOXI_INCLUDE_DIRS})
+   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1752,9 +1715,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1819,7 +1781,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1828,7 +1790,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
+diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
+index a41343cbb5..6075bdd0a4 100644
+--- a/cmake/External/nnpack.cmake
++++ b/cmake/External/nnpack.cmake
+@@ -40,7 +40,7 @@ endif()
+ # (3) Android, iOS, Linux, macOS - supported
+ ##############################################################################
+ 
+-if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
++if(FALSE)
+   message(STATUS "Brace yourself, we are building NNPACK")
+   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
+ 
+@@ -114,6 +114,5 @@ endif()
+ # (4) Catch-all: not supported.
+ ##############################################################################
+ 
+-message(WARNING "Unknown platform - I don't know how to build NNPACK. "
+-                "See cmake/External/nnpack.cmake for details.")
+-set(USE_NNPACK OFF)
++set(NNPACK_FOUND TRUE)
++set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 50404d3b30..ca067f0087 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,7 +15,7 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+ if(BUILD_ONEDNN_GRAPH)
+   if(NOT TARGET caffe2::dnnl_graph)
+     add_library(caffe2::dnnl_graph INTERFACE IMPORTED)
+diff --git a/setup.py b/setup.py
+index 34b2854747..5db117f8e7 100644
+--- a/setup.py
++++ b/setup.py
+@@ -418,13 +418,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         'tools/shared/_utils_internal.py',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h',
+     ]
+     orig_files = [
+         'torch/_utils_internal.py',
+-        'third_party/valgrind-headers/callgrind.h',
+-        'third_party/valgrind-headers/valgrind.h',
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
+diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
+index 89c6b9155f..0c60d08452 100644
+--- a/test/cpp/c10d/CMakeLists.txt
++++ b/test/cpp/c10d/CMakeLists.txt
+@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
+   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ endfunction()
+ 
+-c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
+-c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
++c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
++c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
+ if(INSTALL_TEST)
+   install(TARGETS FileStoreTest DESTINATION bin)
+   install(TARGETS TCPStoreTest DESTINATION bin)
+ endif()
+ if(NOT WIN32)
+-  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
++  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
+   if(INSTALL_TEST)
+     install(TARGETS HashStoreTest DESTINATION bin)
+   endif()
+@@ -31,11 +31,11 @@ endif()
+ 
+ if(USE_CUDA)
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
+     endif()
+-    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+   endif()
+   if(USE_NCCL AND USE_C10D_NCCL)
+     # NCCL is a private dependency of libtorch, but the tests include some
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
+   endif()
+ else()
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
+   endif()
+ endif()
+ 
+diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
+index 7dff70630d..90b1003591 100644
+--- a/test/cpp/tensorexpr/CMakeLists.txt
++++ b/test/cpp/tensorexpr/CMakeLists.txt
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+ # pthreadpool header. For some build environment we need add the dependency
+ # explicitly.
+ if(USE_PTHREADPOOL)
+-  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
++  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
+ endif()
+ if(USE_CUDA)
+   target_link_libraries(test_tensorexpr PRIVATE
diff --git a/gnu/packages/patches/python-pytorch2-system-libraries.patch b/gnu/packages/patches/python-pytorch2-system-libraries.patch
deleted file mode 100644
index c2c44badbb..0000000000
--- a/gnu/packages/patches/python-pytorch2-system-libraries.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
---- a/caffe2/CMakeLists.txt	2023-12-27 12:14:24.308751288 +0100
-+++ b/caffe2/CMakeLists.txt	2023-12-27 12:30:15.941562126 +0100
-@@ -1570,7 +1570,7 @@
-   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
-   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
-   target_link_libraries(static_runtime_bench torch_library benchmark)
--  target_link_libraries(static_runtime_test torch_library gtest_main)
-+  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
- endif()
- 
- if(BUILD_TENSOREXPR_BENCHMARK)
-@@ -1601,7 +1601,7 @@
-   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
-@@ -1628,7 +1628,7 @@
-           endif()
-         else()
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
-         endif()
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-@@ -1645,7 +1645,7 @@
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1666,7 +1666,7 @@
-     foreach(test_src ${Caffe2_MPS_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
-diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
---- a/test/cpp/c10d/CMakeLists.txt
-+++ b/test/cpp/c10d/CMakeLists.txt
-@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
--c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
-+c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
- if(INSTALL_TEST)
-   install(TARGETS FileStoreTest DESTINATION bin)
-   install(TARGETS TCPStoreTest DESTINATION bin)
- endif()
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
-+  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
-   if(INSTALL_TEST)
-     install(TARGETS HashStoreTest DESTINATION bin)
-   endif()
-@@ -31,11 +31,11 @@ endif()
- 
- if(USE_CUDA)
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-     if(INSTALL_TEST)
-       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
-     endif()
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_NCCL AND USE_C10D_NCCL)
-     # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
-   endif()
- else()
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
-   endif()
- endif()
- 
-diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
---- a/test/cpp/tensorexpr/CMakeLists.txt
-+++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
- # pthreadpool header. For some build environment we need add the dependency
- # explicitly.
- if(USE_PTHREADPOOL)
--  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
-+  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
- endif()
- if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch
  2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
                   ` (30 preceding siblings ...)
  2024-03-06 19:40 ` [bug#69591] [PATCH 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
@ 2024-03-12 22:46 ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
                     ` (31 more replies)
  31 siblings, 32 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:46 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

In the previous version, FFmpeg, Vulkan and OpenCV were not included, so I
added them to the inputs and enabled the corresponding build options. In a
basic test, the Vulkan backend seemed to work.
I also adjusted the copyright headers, which I forgot ealier.

David Elsing (31):
  gnu: asmjit: Update to commit 3ca5c18.
  gnu: Add python-typing-extensions-4.10.
  gnu: Add python-optree.
  gnu: Add python-pytest-flakefinder.
  gnu: Add python-pytest-shard.
  gnu: Add python-expecttest.
  gnu: Add python-pytest-rerunfailures-13.
  gnu: Add miniz.
  gnu: Add miniz-for-pytorch.
  gnu: Add libnop.
  gnu: Remove flatbuffers-next-shared.
  gnu: python-flatbuffers-next: Update to 23.5.26.
  gnu: pthreadpool: Update to commit 178e3e0.
  gnu: cpuinfo: Update to commit aa4b216.
  gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  gnu: nnpack: Update to commit 70a77f4.
  gnu: oneapi-dnnl: Update to 3.3.5.
  gnu: Add tensorpipe.
  gnu: Add fbgemm.
  gnu: Add qnnpack.
  gnu: Add foxi.
  gnu: Add ideep-pytorch.
  gnu: xnnpack: Update to commit 51a9875.
  gnu: Remove xnnpack-for-torch2.
  gnu: Add qnnpack-pytorch.
  gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  gnu: python-torchvision: Update to 0.17.1.
  gnu: Add ideep-pytorch-for-r-torch.
  gnu: Add oneapi-dnnl-for-r-torch.
  gnu: Add qnnpack-pytorch-for-r-torch.
  gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.

 gnu/local.mk                                  |   10 +-
 gnu/packages/compression.scm                  |   50 +
 gnu/packages/cpp.scm                          |    6 +-
 gnu/packages/machine-learning.scm             |  890 +++-
 gnu/packages/parallel.scm                     |   31 +-
 .../patches/clog-fix-shared-build.patch       |   39 +-
 .../patches/cpuinfo-system-libraries.patch    |   50 -
 .../patches/fbgemm-use-system-libraries.patch |   62 +
 gnu/packages/patches/foxi-fix-build.patch     |   55 +
 gnu/packages/patches/miniz-for-pytorch.patch  |   47 +
 .../patches/python-optree-fix-32-bit.patch    |  122 +
 ...ython-pytorch-1.9.0-system-libraries.patch |  139 -
 .../patches/python-pytorch-fix-codegen.patch  |  167 +
 ...thon-pytorch-for-r-torch-fix-codegen.patch |  167 +
 ...pytorch-for-r-torch-system-libraries.patch |  399 ++
 .../patches/python-pytorch-runpath.patch      |   19 +-
 .../python-pytorch-system-libraries.patch     |  317 +-
 .../python-pytorch-without-kineto.patch       |   60 +
 .../python-pytorch2-system-libraries.patch    |  156 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------
 .../patches/xnnpack-remove-broken-tests.patch |  335 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 gnu/packages/python-build.scm                 |   14 +-
 gnu/packages/python-check.scm                 |   89 +
 gnu/packages/python-xyz.scm                   |   30 +
 gnu/packages/serialization.scm                |   54 +-
 26 files changed, 5144 insertions(+), 4957 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

-- 
2.41.0





^ permalink raw reply	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 01/31] gnu: asmjit: Update to commit 3ca5c18.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
                     ` (30 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/cpp.scm (asmjit): Update to commit 3ca5c18.
---
 gnu/packages/cpp.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index d451eea2fd..78c3a195a6 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -154,8 +154,8 @@ (define-public argagg
       (license license:expat))))
 
 (define-public asmjit
-  (let ((commit "4ec760a3d1f69e32ba460ecd2513f29b8428700b")
-        (revision "0"))
+  (let ((commit "3ca5c186bf8922e5fe3018432e93651fd2fa4053")
+        (revision "1"))
     (package
       (name "asmjit")
       (version (git-version "0.0.0" revision commit))
@@ -168,7 +168,7 @@ (define-public asmjit
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0skgccbpamcbg1byawfq5n6jzxgj64hnc7jznvk35nkskaaz1nlb"))))
+          (base32 "10k1zc0w8m0vnh52id9qlm1sb99qmpvr6k0ha8ag2h223n0d591g"))))
       (build-system cmake-build-system)
       (arguments
        (list #:configure-flags #~(list "-DASMJIT_TEST=TRUE")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 02/31] gnu: Add python-typing-extensions-4.10.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 03/31] gnu: Add python-optree David Elsing
                     ` (29 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-build.scm (python-typing-extensions-4.10): New variable.
---
 gnu/packages/python-build.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 2ea457cdba..dfd59d5e25 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org>
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
-
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -252,6 +252,18 @@ (define-public python-typing-extensions
 @end enumerate\n")
     (license license:psfl)))
 
+(define-public python-typing-extensions-4.10
+  (package
+    (inherit python-typing-extensions)
+    (version "4.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "typing_extensions" version))
+       (sha256
+        (base32
+         "1jxkj4pni8pdyrn79sq441lsp40xzw363n0qvfc6zfcgkv4dgaxh"))))))
+
 \f
 ;;;
 ;;; Python builder packages.
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 03/31] gnu: Add python-optree.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 04/31] gnu: Add python-pytest-flakefinder David Elsing
                     ` (28 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-xyz.scm (python-optree): New variable.
---
 .../patches/python-optree-fix-32-bit.patch    | 122 ++++++++++++++++++
 gnu/packages/python-xyz.scm                   |  30 +++++
 2 files changed, 152 insertions(+)
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch

diff --git a/gnu/packages/patches/python-optree-fix-32-bit.patch b/gnu/packages/patches/python-optree-fix-32-bit.patch
new file mode 100644
index 0000000000..6a32c39bd8
--- /dev/null
+++ b/gnu/packages/patches/python-optree-fix-32-bit.patch
@@ -0,0 +1,122 @@
+In include/utils.h, ssize_t is an alias for py::ssize_t, which is an alias for
+Py_ssize_t in Python, which is an alias for the system ssize_t.
+The latter is defined in glibc as int if __WORDSIZE == 32 and as long int if
+__WORDSIZE == 64.  Therefore, we need to remove the explicit template
+specialization for int in the first case.
+
+diff --git a/include/utils.h b/include/utils.h
+index 950a02b..82a9591 100644
+--- a/include/utils.h
++++ b/include/utils.h
+@@ -141,10 +141,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const size_t& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const int& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const ssize_t& item) {
+     return PyList_GET_ITEM(container.ptr(), item);
+@@ -153,10 +155,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const size_t& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const int& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_BORROW(const py::handle& container, const Item& item) {
+@@ -171,11 +175,13 @@ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_borrow<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -185,11 +191,13 @@ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const s
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_STEAL(const py::handle& container, const Item& item) {
+@@ -204,11 +212,13 @@ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const s
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_steal<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -218,11 +228,13 @@ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const si
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline void SET_ITEM(const py::handle& container, const Item& item, const py::handle& value) {
+@@ -240,12 +252,14 @@ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const int& item,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const ssize_t& item,
+@@ -258,12 +272,14 @@ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const int& item,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ 
+ template <typename PyType>
+ inline void AssertExact(const py::handle& object) {
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 0c72caeca0..b664aac3b7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -148,6 +148,7 @@
 ;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com>
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Ian Eure <ian@retrospec.tv>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -11636,6 +11637,35 @@ (define-public python-treelib
      "This package provides a Python implementation of a tree structure.")
     (license license:asl2.0)))
 
+(define-public python-optree
+  (package
+    (name "python-optree")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/metaopt/optree")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1q3wljk7cyl5rsam02sfsj8zjrqx4c3x9vic8j6xx13p8czpsisg"))
+       (patches (search-patches "python-optree-fix-32-bit.patch"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-typing-extensions))
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-xdist
+           cmake
+           pybind11))
+    (home-page "https://github.com/metaopt/optree")
+    (synopsis "Optimized PyTree Utilities")
+    (description "This package contains operations on PyTrees (a tree made of
+container data structures in Python).")
+    (license license:asl2.0)))
+
 (define-public python-jupyter-core
   (package
     (name "python-jupyter-core")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 04/31] gnu: Add python-pytest-flakefinder.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (2 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 03/31] gnu: Add python-optree David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 05/31] gnu: Add python-pytest-shard David Elsing
                     ` (27 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-flakefinder): New variable.
---
 gnu/packages/python-check.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 51a38bbcbe..247f8af98b 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,6 +192,24 @@ (define-public python-pytest-csv
 it adds to the Pytest command line interface (CLI).")
     (license license:gpl3+)))
 
+(define-public python-pytest-flakefinder
+  (package
+    (name "python-pytest-flakefinder")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flakefinder" version))
+       (sha256
+        (base32 "03iy80xlkpgzjs2kxa9rrj8dbnp9awyhpcl3hy8fgf5x40cjlhg2"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-pytest))
+    (home-page "https://github.com/dropbox/pytest-flakefinder")
+    (synopsis "Pytest plugin for finding flaky tests")
+    (description "This package provides a Pytest plugin to run tests multiple
+times and detect flakyness.")
+    (license license:asl2.0)))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 05/31] gnu: Add python-pytest-shard.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (3 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 04/31] gnu: Add python-pytest-flakefinder David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 06/31] gnu: Add python-expecttest David Elsing
                     ` (26 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-shard): New variable.
---
 gnu/packages/python-check.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 247f8af98b..f876088488 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -210,6 +210,30 @@ (define-public python-pytest-flakefinder
 times and detect flakyness.")
     (license license:asl2.0)))
 
+(define-public python-pytest-shard
+  (let ((commit "64610a08dac6b0511b6d51cf895d0e1040d162ad")
+        (revision "0"))
+    (package
+      (name "python-pytest-shard")
+      (version (git-version "0.1.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AdamGleave/pytest-shard")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1h31m68igz670bzl307hazjrfbr8pk14mxflllar18ydmlrnl677"))))
+      (build-system pyproject-build-system)
+      (propagated-inputs (list python-pytest))
+      (home-page "https://github.com/AdamGleave/pytest-shard")
+      (synopsis "Pytest plugin for sharding tests")
+      (description "This package provides a Pytest extension for sharding
+tests at the granularity of individual test cases, which can be run in
+parallel and on multiple machines.")
+      (license license:expat))))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 06/31] gnu: Add python-expecttest.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (4 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 05/31] gnu: Add python-pytest-shard David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
                     ` (25 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-expecttest): New variable.
---
 gnu/packages/python-check.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index f876088488..dbca80652c 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2078,6 +2078,41 @@ (define-public python-eradicate
 valid Python syntax that are likely to be commented out code.")
     (license license:expat)))
 
+(define-public python-expecttest
+  (let ((commit "683b09a352cc426851adc2e3a9f46e0ab25e4dee")
+        (revision "0"))
+    (package
+      (name "python-expecttest")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ezyang/expecttest")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1djwxp9x1hczzxbimv1b1bmd083am88v27l82nmlkhvzyg2cmpvv"))))
+      (build-system pyproject-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; The test runs tests expected to fail, so the output is
+                  ;; confusing
+                  (invoke "python3" "test_expecttest.py")))))))
+      (native-inputs (list python-hypothesis poetry))
+      (home-page "https://github.com/ezyang/expecttest")
+      (synopsis "Python module for expect tests")
+      (description "@code{expecttest} is a Python module for expect tests, where
+the initial expected value of a test can be automatically set by running the
+test itself.")
+      (license license:expat))))
+
 (define-public python-robber
   (package
     (name "python-robber")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 07/31] gnu: Add python-pytest-rerunfailures-13.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (5 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 06/31] gnu: Add python-expecttest David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 08/31] gnu: Add miniz David Elsing
                     ` (24 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-rerunfailures-13): New variable.
---
 gnu/packages/python-check.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index dbca80652c..347e4a4701 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2464,6 +2464,17 @@ (define-public python-pytest-rerunfailures
 eliminate flaky failures.")
     (license license:mpl2.0)))
 
+(define-public python-pytest-rerunfailures-13
+  (package
+    (inherit python-pytest-rerunfailures)
+    (version "13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-rerunfailures" version))
+       (sha256
+        (base32 "16cin0chv59w4rvnd6r0fisp0s8avmp07rwn9da6yixw43jdncp1"))))))
+
 (define-public python-xunitparser
   (package
     (name "python-xunitparser")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 08/31] gnu: Add miniz.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (6 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 09/31] gnu: Add miniz-for-pytorch David Elsing
                     ` (23 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz): New variable.
---
 gnu/packages/compression.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 5de17b6b51..fcfc2c30f3 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2838,3 +2839,31 @@ (define-public unrar-free
 libarchive.  It does not rival the non-free @code{unrar} in terms of features,
 but special care has been taken to ensure it meets most user's needs.")
     (license license:gpl2+)))
+
+(define-public miniz
+  (package
+    (name "miniz")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0672q35vjrpakmsr1gwj9k5fwv5ihzhahm19bq4y74wqpn91p7fw"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON")
+      ;; No tests
+      #:tests? #f))
+    (home-page "https://github.com/richgel999/miniz")
+    (synopsis "Independent implementation of zlib and Deflate compression")
+    (description "Miniz is a lossless data compression library that implements
+the zlib (RFC 1950) and Deflate (RFC 1951) compressed data format
+specification standards.  It supports the most commonly used functions
+exported by the zlib library.")
+    (license license:expat)))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 09/31] gnu: Add miniz-for-pytorch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (7 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 08/31] gnu: Add miniz David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 10/31] gnu: Add libnop David Elsing
                     ` (22 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz-for-pytorch): New variable.
* gnu/packages/patches/miniz-for-pytorch.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                 |  1 +
 gnu/packages/compression.scm                 | 21 +++++++++
 gnu/packages/patches/miniz-for-pytorch.patch | 47 ++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e8b0a0e7be..43da38f4fd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1689,6 +1689,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/miniz-for-pytorch.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index fcfc2c30f3..589c9bb834 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2867,3 +2867,24 @@ (define-public miniz
 specification standards.  It supports the most commonly used functions
 exported by the zlib library.")
     (license license:expat)))
+
+(define-public miniz-for-pytorch
+  (package
+    (inherit miniz)
+    (version "pytorch-2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit "2.2.0")))
+              (file-name (git-file-name (package-name miniz) version))
+              (sha256
+               (base32
+                "09j9ihigfsavgcmk8l36zmbjvdf1x1w7h2v4rkww1qk1sb43y5zf"))
+              (patches (search-patches "miniz-for-pytorch.patch"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments miniz)
+       ((#:configure-flags flags '())
+        ;; The changes break the examples.
+        `(cons "-DBUILD_EXAMPLES=OFF" ,flags))))
+    (properties '((hidden? . #t)))))
diff --git a/gnu/packages/patches/miniz-for-pytorch.patch b/gnu/packages/patches/miniz-for-pytorch.patch
new file mode 100644
index 0000000000..19fa705a31
--- /dev/null
+++ b/gnu/packages/patches/miniz-for-pytorch.patch
@@ -0,0 +1,47 @@
+Modifications from the internal fork of the python-pytorch package.
+
+diff --git a/miniz.h b/miniz.h
+index 42e1ea2..5869ab9 100644
+--- a/miniz.h
++++ b/miniz.h
+@@ -123,7 +123,7 @@
+ /* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */
+ /* get/set file times, and the C run-time funcs that get/set times won't be called. */
+ /* The current downside is the times written to your archives will be from 1979. */
+-/*#define MINIZ_NO_TIME */
++#define MINIZ_NO_TIME
+ 
+ /* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
+ /*#define MINIZ_NO_ARCHIVE_APIS */
+@@ -135,7 +135,7 @@
+ /*#define MINIZ_NO_ZLIB_APIS */
+ 
+ /* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */
+-/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
++#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+ 
+ /* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. 
+    Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc
+@@ -172,8 +172,7 @@
+ #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
+ #if MINIZ_X86_OR_X64_CPU
+ /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
+-#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
+-#define MINIZ_UNALIGNED_USE_MEMCPY
++#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #else
+ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #endif
+diff --git a/miniz_zip.h b/miniz_zip.h
+index 82502bd..3d92255 100644
+--- a/miniz_zip.h
++++ b/miniz_zip.h
+@@ -150,7 +150,7 @@ typedef enum {
+     MZ_ZIP_TOTAL_ERRORS
+ } mz_zip_error;
+ 
+-typedef struct
++typedef struct mz_zip_archive
+ {
+     mz_uint64 m_archive_size;
+     mz_uint64 m_central_directory_file_ofs;
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 10/31] gnu: Add libnop.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (8 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 09/31] gnu: Add miniz-for-pytorch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 11/31] gnu: Remove flatbuffers-next-shared David Elsing
                     ` (21 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (libnop): New variable.
---
 gnu/packages/serialization.scm | 39 ++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 331fae80cf..bfee0dbfc6 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2024 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -936,3 +937,41 @@ (define-public python-feather-format
     (description "This package provides a Python wrapper library to the
 Apache Arrow-based Feather binary columnar serialization data frame format.")
     (license license:asl2.0)))
+
+(define-public libnop
+  (let ((commit "35e800d81f28c632956c5a592e3cbe8085ecd430")
+        (revision "0"))
+    (package
+      (name "libnop")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/libnop")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0qqbaljq54qiq0dky9nj47igfcs065ry526jg9a0aafbfl9krpy2"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:test-target "test"
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "out/test"))))
+            (replace 'install
+              (lambda _
+                (copy-recursively
+                 "include" (string-append #$output "/include")))))))
+      (native-inputs (list googletest))
+      (home-page "https://github.com/google/libnop")
+      (synopsis "C++ Native Object Protocols")
+      (description "@code{libnop} is a header-only library for serializing and
+deserializing C++ data types without external code generators or runtime
+support libraries.")
+      (license license:asl2.0))))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 11/31] gnu: Remove flatbuffers-next-shared.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (9 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 10/31] gnu: Add libnop David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
                     ` (20 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (flatbuffers-next-shared): Delete variable.
* gnu/packages/machine-learning.scm (tensorflow-lite)[arguments]: Use
flatbuffers-next instead of flatbuffers-next-shared.
---
 gnu/packages/machine-learning.scm |  5 +++--
 gnu/packages/serialization.scm    | 11 -----------
 2 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5c18a2e9d5..6da189616d 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2024 David Pflug <david@pflug.io>
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Spencer King <spencer.king@geneoscopy.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3337,7 +3338,7 @@ (define-public tensorflow-lite
          (string-append "-DEigen3_DIR=" #$(this-package-input "eigen")
                         "/share/eigen3/cmake")
          (string-append "-DFlatBuffers_DIR="
-                        #$(this-package-input "flatbuffers-shared")
+                        #$(this-package-input "flatbuffers")
                         "/lib/cmake/flatbuffers")
          (string-append "-DNEON_2_SSE_DIR=" #$(this-package-input "neon2sse")
                         "/lib/cmake/NEON_2_SSE")
@@ -3424,7 +3425,7 @@ (define-public tensorflow-lite
        ("cpuinfo" ,cpuinfo)
        ("eigen" ,eigen)
        ("fp16" ,fp16)
-       ("flatbuffers-shared" ,flatbuffers-next-shared)
+       ("flatbuffers" ,flatbuffers-next)
        ("gemmlowp" ,gemmlowp)
        ("mesa-headers" ,mesa-headers)
        ("neon2sse" ,neon2sse)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index bfee0dbfc6..405c4211da 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -890,17 +890,6 @@ (define-public flatbuffers-next
                (base32
                 "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
 
-(define-public flatbuffers-next-shared
-  (package
-    (inherit flatbuffers-next)
-    (name "flatbuffers-shared")
-    (version "23.1.21")
-    (arguments
-     (substitute-keyword-arguments (package-arguments flatbuffers-next)
-       ((#:configure-flags  flags)
-        ;; Compile with -fPIC, needed for shared lib.
-        #~(cons "-DFLATBUFFERS_CXX_FLAGS=-fPIC" #$flags))))))
-
 (define-public python-flatbuffers
   (package
     (name "python-flatbuffers")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 12/31] gnu: python-flatbuffers-next: Update to 23.5.26.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (10 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 11/31] gnu: Remove flatbuffers-next-shared David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
                     ` (19 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (python-flatbuffers-next): Update to 23.5.26.
---
 gnu/packages/serialization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 405c4211da..bea96f2a92 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -879,7 +879,7 @@ (define-public flatbuffers
 (define-public flatbuffers-next
   (package
     (inherit flatbuffers)
-    (version "23.1.21")
+    (version "23.5.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -888,7 +888,7 @@ (define-public flatbuffers-next
               (file-name (git-file-name "flatbuffers" version))
               (sha256
                (base32
-                "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
+                "0cd12dvkzqdafz46q4302mzgpzbz589zmmiga7bq07f2sqy4vrvv"))))))
 
 (define-public python-flatbuffers
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 13/31] gnu: pthreadpool: Update to commit 178e3e0.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (11 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
                     ` (18 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (pthreadpool): Update to commit 178e3e0.
---
 gnu/packages/parallel.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index ddf4ad016b..e1cbe52934 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -449,9 +450,9 @@ (define-public python-slurm-magic
 (define-public pthreadpool
   ;; This repository has only one tag, 0.1, which is older than what users
   ;; such as XNNPACK expect.
-  (let ((commit "1787867f6183f056420e532eec640cba25efafea")
+  (let ((commit "178e3e0646cc671708bf78e77c273940130ac637")
         (version "0.1")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "pthreadpool")
       (version (git-version version revision commit))
@@ -462,7 +463,7 @@ (define-public pthreadpool
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02hdvxfn5krw8zivkgjx3b4rk9p02yr4mpdjlp75lsv6z1xf5yrx"))
+                  "1s86lnq9bahacf5wxn7y14w70jh3g9lq1l7y16ijwhifd01nc2km"))
                 (patches (search-patches "pthreadpool-system-libraries.patch"))))
       (build-system cmake-build-system)
       (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 14/31] gnu: cpuinfo: Update to commit aa4b216.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (12 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
                     ` (17 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (cpuinfo): Update to commit aa4b216.
[arguments]: Set the "-DUSE_SYSTEM_LIBS=ON" configure flag instead of using a
patch.
* gnu/packages/patches/cpuinfo-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/parallel.scm                     | 11 ++--
 .../patches/cpuinfo-system-libraries.patch    | 50 -------------------
 3 files changed, 6 insertions(+), 56 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 43da38f4fd..75295a8250 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1067,7 +1067,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/cppcheck-disable-char-signedness-test.patch	\
-  %D%/packages/patches/cpuinfo-system-libraries.patch		\
   %D%/packages/patches/cpulimit-with-glib-2.32.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crc32c-unbundle-googletest.patch		\
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index e1cbe52934..a210ca0313 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -480,8 +480,8 @@ (define-public pthreadpool
 (define-public cpuinfo
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (revision "2")
-        (commit "53298db833c5c5a1598639e9b47cc1a602bbac26"))
+        (revision "3")
+        (commit "aa4b2163b99ac9534194520f70b93eeefb0b3b4e"))
     (package
       (name "cpuinfo")
       (version (git-version version revision commit))
@@ -492,12 +492,13 @@ (define-public cpuinfo
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "01kfgxya2w32dz9bd3qm3i2d6nffw0qfyql11rxl7d3g830brj5k"))
-                (patches (search-patches "cpuinfo-system-libraries.patch"))))
+                  "12x4krkyzxngf1l2ck33lnsp8pyzf6gyjj9mp9cnka9mw3h6617m"))))
       (build-system cmake-build-system)
       (arguments
        (list
-        #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON")
+        #:configure-flags
+        '(list "-DBUILD_SHARED_LIBS=ON"
+               "-DUSE_SYSTEM_LIBS=ON")
         #:phases
         '(modify-phases %standard-phases
            (add-after 'unpack 'skip-bad-test
diff --git a/gnu/packages/patches/cpuinfo-system-libraries.patch b/gnu/packages/patches/cpuinfo-system-libraries.patch
deleted file mode 100644
index e25446e9da..0000000000
--- a/gnu/packages/patches/cpuinfo-system-libraries.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57abc26..761c612 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -93,7 +93,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
- 
- IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -105,7 +105,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
- ENDIF()
- 
- IF(CPUINFO_BUILD_BENCHMARKS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -271,14 +271,6 @@ INSTALL(TARGETS cpuinfo
- 
- # ---[ cpuinfo micro-benchmarks
- IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
--  # ---[ Build google benchmark
--  IF(NOT TARGET benchmark)
--    SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "")
--    ADD_SUBDIRECTORY(
--      "${GOOGLEBENCHMARK_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark")
--  ENDIF()
--
-   IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$")
-     ADD_EXECUTABLE(get-current-bench bench/get-current.cc)
-     TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark)
-@@ -289,7 +281,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
- ENDIF()
- 
- IF(CPUINFO_SUPPORTED_PLATFORM)
--  IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
-+  IF(FALSE)
-     # ---[ Build google test
-     IF(NOT TARGET gtest)
-       IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (13 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
                     ` (16 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (clog)[arguments]: Add "-DUSE_SYSTEM_LIBS=ON"
to #:configure-flags.
* gnu/packages/patches/clog-fix-shared-build.patch: Adjust patch.
---
 gnu/packages/parallel.scm                     | 13 ++++---
 .../patches/clog-fix-shared-build.patch       | 39 ++-----------------
 2 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index a210ca0313..93d82a7d72 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -524,11 +524,14 @@ (define-public clog
               (inherit (package-source cpuinfo))
               (patches (search-patches "clog-fix-shared-build.patch"))))
     (arguments
-     (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'chdir
-                          (lambda _
-                            (chdir "deps/clog"))))))
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON"
+         "-DUSE_SYSTEM_LIBS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'chdir
+                     (lambda _
+                       (chdir "deps/clog"))))))
     (native-inputs (list googletest))
     (inputs '())
     (synopsis "C-style logging library based on printf")
diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch
index bf80544b90..eb305339f5 100644
--- a/gnu/packages/patches/clog-fix-shared-build.patch
+++ b/gnu/packages/patches/clog-fix-shared-build.patch
@@ -1,50 +1,19 @@
 Author: Antero Mejr <antero@mailbox.org>
-Notes: Disabled function visibility hacks and googletest download. Enabled
-non-static builds.
+Notes: Disabled function visibility hacks. Enabled non-static builds.
 
 diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
-index 083f519..b7b225a 100644
+index 6e50c41..db02e95 100644
 --- a/deps/clog/CMakeLists.txt
 +++ b/deps/clog/CMakeLists.txt
-@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
- SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
+@@ -55,7 +55,7 @@ IF(CLOG_BUILD_TESTS)
+ ENDIF()
  
--IF(CLOG_BUILD_TESTS)
--  IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
--    MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
--    CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
--  ENDIF()
--ENDIF()
--
  # ---[ clog library
 -ADD_LIBRARY(clog STATIC src/clog.c)
 +ADD_LIBRARY(clog src/clog.c)
  SET_TARGET_PROPERTIES(clog PROPERTIES
    C_STANDARD 99
    C_EXTENSIONS NO)
-@@ -74,16 +62,6 @@ INSTALL(TARGETS clog
- 
- # ---[ clog tests
- IF(CLOG_BUILD_TESTS)
--  # ---[ Build google test
--  IF(NOT TARGET gtest)
--    IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
--      SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
--    ENDIF()
--    ADD_SUBDIRECTORY(
--      "${GOOGLETEST_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
--  ENDIF()
--
-   ADD_EXECUTABLE(clog-test test/clog.cc)
-   SET_TARGET_PROPERTIES(clog-test PROPERTIES
-     CXX_STANDARD 11
 diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h
 index 4143761..aa9000f 100644
 --- a/deps/clog/include/clog.h
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 16/31] gnu: nnpack: Update to commit 70a77f4.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (14 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
                     ` (15 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (nnpack): Update to commit 70a77f4.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 6da189616d..ea2b7ca648 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3975,8 +3975,8 @@ (define-public python-umap-learn
 
 (define-public nnpack
   (let ((version "0.0")
-        (commit "c07e3a0400713d546e0dea2d5466dd22ea389c73")
-        (revision "1"))
+        (commit "70a77f485e8b934224f3a79efd8edcd84cd377b8")
+        (revision "2"))
     (package
       (name "nnpack")
       (version (git-version version revision commit))
@@ -3987,7 +3987,7 @@ (define-public nnpack
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0s0kk3a35w3yzf0q447p72350sbsh4qhg6vm3y2djbj4xpg7jc8v"))
+                  "0c4pw926279s3rlx7mg4l4vhnfy6dh374n6w7zqhcn0bxpym1hv1"))
                 (patches (search-patches "nnpack-system-libraries.patch"))))
       (build-system cmake-build-system)
       ;; XXX: The test suite runs but it's very expensive, and on x86_64 CPUs
@@ -4020,6 +4020,8 @@ (define-public nnpack
              googletest))
       (native-inputs
        (list python python-peachpy python-six))
+      ;; Supported for Linux
+      (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
 (define-public xnnpack
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 17/31] gnu: oneapi-dnnl: Update to 3.3.5.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (15 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 18/31] gnu: Add tensorpipe David Elsing
                     ` (14 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl): Update to 3.3.5.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ea2b7ca648..7f39b4ea13 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5376,7 +5376,7 @@ (define-public python-brian2tools
 (define-public oneapi-dnnl
   (package
     (name "oneapi-dnnl")
-    (version "3.1")
+    (version "3.3.5")
     (source
      (origin
        (method git-fetch)
@@ -5385,7 +5385,7 @@ (define-public oneapi-dnnl
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
+        (base32 "05ra5zziys2hvn29y6ysiqzsf4jr9bf2bci5sc3swvf3bs2y5ihf"))))
     (build-system cmake-build-system)
     (arguments (if (target-riscv64?)
                    (list #:configure-flags #~'("-DDNNL_CPU_RUNTIME=SEQ"))
@@ -5395,6 +5395,7 @@ (define-public oneapi-dnnl
     (description
      "OneAPI Deep Neural Network Library (oneDNN) is a cross-platform
 performance library of basic building blocks for deep learning applications.")
+    (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
 (define-public python-gguf
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 18/31] gnu: Add tensorpipe.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (16 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 19/31] gnu: Add fbgemm David Elsing
                     ` (13 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (tensorpipe): New variable.
---
 gnu/packages/machine-learning.scm | 36 +++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 7f39b4ea13..ad8b8c9960 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -91,6 +91,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -4100,6 +4101,41 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public tensorpipe
+  (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
+        (revision "0"))
+    (package
+      (name "tensorpipe")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pytorch/tensorpipe")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0sbpkd69rzybw2j89sjkf4s0j8vkk96d51bsps28894989a75j6v"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(delete-file-recursively "third_party"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:configure-flags
+        ''("-DBUILD_SHARED_LIBS=ON")
+        ;; There are no tests
+        #:tests? #f))
+      (inputs (list libuv))
+      (native-inputs (list googletest pkg-config pybind11 libnop))
+      (home-page "https://github.com/pytorch/tensorpipe")
+      (synopsis "Tensor-aware point-to-point communication primitive for
+machine learning")
+      (description "TensorPipe provides a tensor-aware channel to transfer
+rich objects from one process to another while using the fastest transport for
+the tensors contained therein.")
+      (license license:bsd-3))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 19/31] gnu: Add fbgemm.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (17 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 18/31] gnu: Add tensorpipe David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 20/31] gnu: Add qnnpack David Elsing
                     ` (12 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (fbgemm): New variable.
* gnu/packages/patches/fbgemm-use-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/machine-learning.scm             | 31 ++++++++++
 .../patches/fbgemm-use-system-libraries.patch | 62 +++++++++++++++++++
 3 files changed, 94 insertions(+)
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 75295a8250..2f685e2f7d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1174,6 +1174,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spUtils.patch			\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
+  %D%/packages/patches/fbgemm-use-system-libraries.patch	\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
   %D%/packages/patches/fbreader-fix-icon.patch		\
   %D%/packages/patches/fenics-dolfin-algorithm.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ad8b8c9960..72b11cca5f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4101,6 +4101,37 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public fbgemm
+  (package
+    (name "fbgemm")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pytorch/fbgemm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mw30v55aicqdbh3xwfj9p8f38nw70ks5cxiwpgwjsk0dylah9rf"))
+              (patches (search-patches "fbgemm-use-system-libraries.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(delete-file-recursively "third_party"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DFBGEMM_LIBRARY_TYPE=shared")))
+    (inputs (list asmjit cpuinfo))
+    (native-inputs (list pkg-config python googletest))
+    (home-page "https://github.com/pytorch/fbgemm")
+    (synopsis "Facebook GEneral Matrix Multiplication")
+    (description "Low-precision, high-performance matrix-matrix
+multiplications and convolution library for server-side inference.")
+    (supported-systems '("x86_64-linux"))
+    (license license:bsd-3)))
+
 (define-public tensorpipe
   (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
         (revision "0"))
diff --git a/gnu/packages/patches/fbgemm-use-system-libraries.patch b/gnu/packages/patches/fbgemm-use-system-libraries.patch
new file mode 100644
index 0000000000..456bc3021c
--- /dev/null
+++ b/gnu/packages/patches/fbgemm-use-system-libraries.patch
@@ -0,0 +1,62 @@
+Use the asmjit and cpuinfo packages.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 134523e..b88b0e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -235,7 +235,7 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(WARNING "==========")
+ 
+-if(NOT TARGET asmjit)
++if(FALSE)
+   #Download asmjit from github if ASMJIT_SRC_DIR is not specified.
+   if(NOT DEFINED ASMJIT_SRC_DIR)
+     set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/third_party/asmjit"
+@@ -264,7 +264,7 @@ if(NOT TARGET asmjit)
+   endif()
+ endif()
+ 
+-if(NOT TARGET cpuinfo)
++if(FALSE)
+   #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
+   if(NOT DEFINED CPUINFO_SOURCE_DIR)
+     set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/third_party/cpuinfo"
+@@ -340,9 +340,12 @@ target_include_directories(fbgemm BEFORE
+ target_link_libraries(fbgemm
+   $<BUILD_INTERFACE:asmjit>
+   $<BUILD_INTERFACE:cpuinfo>)
+-add_dependencies(fbgemm
+-  asmjit
+-  cpuinfo)
++
++find_package(asmjit)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(libcpuinfo REQUIRED IMPORTED_TARGET libcpuinfo)
++
++target_link_libraries(fbgemm asmjit::asmjit PkgConfig::libcpuinfo)
+ 
+ if(OpenMP_FOUND)
+   target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 2cffddf..bd4d409 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -14,7 +14,7 @@ set(CMAKE_C_STANDARD 11)
+ set(CMAKE_C_EXTENSIONS OFF)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+ 
+-if(FBGEMM_BUILD_TESTS AND NOT TARGET gtest)
++if(FALSE)
+   #Download Googletest framework from github if
+   #GOOGLETEST_SOURCE_DIR is not specified.
+   if(NOT DEFINED GOOGLETEST_SOURCE_DIR)
+@@ -78,7 +78,7 @@ macro(add_gtest TESTNAME)
+     target_link_libraries(${TESTNAME} ${OpenMP_CXX_LIBRARIES})
+   endif()
+ 
+-  add_dependencies(${TESTNAME} gtest fbgemm)
++  add_dependencies(${TESTNAME} fbgemm)
+   add_test(${TESTNAME} ${TESTNAME})
+   set_target_properties(${TESTNAME} PROPERTIES FOLDER test)
+ endmacro()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 20/31] gnu: Add qnnpack.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (18 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 19/31] gnu: Add fbgemm David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 21/31] gnu: Add foxi David Elsing
                     ` (11 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (qnnpack): New variable.
---
 gnu/packages/machine-learning.scm | 49 +++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 72b11cca5f..bc1aa308a9 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4025,6 +4025,55 @@ (define-public nnpack
       (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
+(define-public qnnpack
+  (let ((commit "7d2a4e9931a82adc3814275b6219a03e24e36b4c")
+        (revision "0"))
+    (package
+      (name "qnnpack")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pytorch/qnnpack")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1dgzriiaz9arsrfwhx42y4l74wbzn6xvdmllfb66v4pmvi5gpxc5"))
+         (modules '((guix build utils)))
+         (snippet
+          '(delete-file-recursively "deps"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; The shared library build fails with linker errors, so we build the
+        ;; static library with -fPIC as in the bundled PyTorch version.
+        #:configure-flags
+        ''("-DQNNPACK_LIBRARY_TYPE=static"
+           "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("IF.*SOURCE_DIR.*")
+                   "IF(FALSE)\n")
+                  (("IF\\(NOT TARGET.*")
+                   "IF(FALSE)\n")
+                  (("TARGET_LINK_LIBRARIES.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(TARGET_LINK_LIBRARIES.*) fp16 (.*)" _ before after)
+                   (string-append before " " after))))))))
+      (inputs (list clog cpuinfo fp16 fxdiv psimd pthreadpool))
+      (native-inputs (list googletest googlebenchmark))
+      (home-page "https://github.com/pytorch/qnnpack")
+      (synopsis "Quantized Neural Network PACKage")
+      (description "QNNPACK is a library for low-precision neural network
+inference.  It contains the implementation of common neural network operators
+on quantized 8-bit tensors.")
+      (license license:bsd-3))))
+
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 21/31] gnu: Add foxi.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (19 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 20/31] gnu: Add qnnpack David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 22/31] gnu: Add ideep-pytorch David Elsing
                     ` (10 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (foxi): New variable.
* gnu/packages/patches/foxi-fix-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                              |  1 +
 gnu/packages/machine-learning.scm         | 29 ++++++++++++
 gnu/packages/patches/foxi-fix-build.patch | 55 +++++++++++++++++++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2f685e2f7d..becd39a58d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1206,6 +1206,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
+  %D%/packages/patches/foxi-fix-build.patch			\
   %D%/packages/patches/fp16-implicit-double.patch		\
   %D%/packages/patches/fp16-system-libraries.patch		\
   %D%/packages/patches/fpc-reproducibility.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index bc1aa308a9..759eb7f66f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4216,6 +4216,35 @@ (define-public tensorpipe
 the tensors contained therein.")
       (license license:bsd-3))))
 
+(define-public foxi
+  (let
+      ((commit "c278588e34e535f0bb8f00df3880d26928038cad")
+       (revision "0"))
+    (package
+      (name "foxi")
+      (version (git-version "1.4.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/houseroad/foxi")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0q3ssm5hmmvwfwx87mnnajbavzgpahybw6rpn8ysr9r095dwgq5a"))
+                (patches (search-patches "foxi-fix-build.patch"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; No tests
+        #:tests? #f))
+      (home-page "https://github.com/houseroad/foxi")
+      (synopsis "ONNXIFI with Facebook Extension")
+      (description "ONNX Interface for Framework Integration is a cross-platform
+API for loading and executing ONNX graphs on optimized backends.  This package
+contains facebook extensions and is used by PyTorch.")
+      (license license:expat))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
diff --git a/gnu/packages/patches/foxi-fix-build.patch b/gnu/packages/patches/foxi-fix-build.patch
new file mode 100644
index 0000000000..d82090ad38
--- /dev/null
+++ b/gnu/packages/patches/foxi-fix-build.patch
@@ -0,0 +1,55 @@
+Taken from https://github.com/houseroad/foxi/pull/25.
+
+diff --git a/foxi/onnxifi_dummy.c b/foxi/onnxifi_dummy.c
+index 2115af9..73e25fc 100644
+--- a/foxi/onnxifi_dummy.c
++++ b/foxi/onnxifi_dummy.c
+@@ -103,7 +103,10 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph) {
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader) {
++
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+   }
+@@ -215,6 +218,8 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI
+ onnxWaitEventFor(onnxEvent event,
+                  uint32_t timeoutMs,
+                  onnxEventState* eventState,
+-                 onnxStatus* eventStatus) {
++		  onnxStatus* eventStatus,
++		  char* message,
++		  size_t* messageLength) {
+   return ONNXIFI_STATUS_SUCCESS;
+ }
+\ No newline at end of file
+diff --git a/foxi/onnxifi_wrapper.c b/foxi/onnxifi_wrapper.c
+index 98a9325..abe1440 100644
+--- a/foxi/onnxifi_wrapper.c
++++ b/foxi/onnxifi_wrapper.c
+@@ -761,7 +761,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightsCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph)
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader)
+ {
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+@@ -797,7 +799,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     onnxModel,
+     weightsCount,
+     weightDescriptors,
+-    &graph_wrapper->graph);
++    &graph_wrapper->graph,
++    maxSeqLength,
++    deferredWeightReader);
+   switch (status) {
+     case ONNXIFI_STATUS_SUCCESS:
+     case ONNXIFI_STATUS_FALLBACK:
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 22/31] gnu: Add ideep-pytorch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (20 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 21/31] gnu: Add foxi David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
                     ` (9 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 759eb7f66f..287f9b1397 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -52,6 +52,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (guix download)
   #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system pyproject)
@@ -4245,6 +4246,31 @@ (define-public foxi
 contains facebook extensions and is used by PyTorch.")
       (license license:expat))))
 
+(define-public ideep-pytorch
+  (package
+    (name "ideep-pytorch")
+    (version "3.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0y6r938qryi3bnf15rp0fbilsfimdcgmvsa0ygwrn3zifw6386rb"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan
+      ''(("include" "include"))))
+    (home-page "https://github.com/intel/ideep")
+    (synopsis "Ideep headers for interal use by PyTorch")
+    (description "This library is used internally as header-only library by
+PyTorch.")
+    (license license:expat)))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 23/31] gnu: xnnpack: Update to commit 51a9875.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (21 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 22/31] gnu: Add ideep-pytorch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
                     ` (8 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

The tests which fail to build if building the shared library are removed by a
patch. Autogenerated files are removed by a snippet and generated in a
separate build phase.

* gnu/packages/machine-learning.scm (xnnpack): Update to commit 51a9875.
[source]: Add patch for tests. Add snippet to remove autogenerated files.
[arguments]: New modules and phase arguments.
[inputs]: Add clog and cpuinfo.
[native-inputs]: New field.
* gnu/packages/patches/xnnpack-remove-broken-tests.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/patches/xnnpack-system-libraries.patch: Update patch.
---
 gnu/local.mk                                  |    1 +
 gnu/packages/machine-learning.scm             |  106 +-
 .../patches/xnnpack-remove-broken-tests.patch |  335 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 4 files changed, 2922 insertions(+), 1653 deletions(-)
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index becd39a58d..6d5001c617 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2204,6 +2204,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
+  %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
   %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 287f9b1397..ca3772aca8 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4078,41 +4078,109 @@ (define-public qnnpack
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (commit "ae108ef49aa5623b896fc93d4298c49d1750d9ba")
-        (revision "2"))
+        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
+        (revision "3"))
     (package
       (name "xnnpack")
       (version (git-version version revision commit))
       (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0q68q2jxiiiblx45q4337k13ppgh5vqjwrwznchcnpb8hawjj3zl"))
-                (patches (search-patches "xnnpack-system-libraries.patch"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url home-page) (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
+         ;; Some tests fail to link as they use internal symbols, which are
+         ;; not included in the shared library.
+         ;; XXX: Additionally, these tests fail on i686 due to incorrect results:
+         ;; 171 - f32-vlrelu-test (Failed)
+         ;; 211 - qs8-gavgpool-minmax-fp32-test (Failed)
+         ;; 224 - qu8-avgpool-minmax-fp32-test (Failed)
+         ;; 228 - qu8-gavgpool-minmax-fp32-test (Failed)
+         ;; 263 - x32-packx-test (Failed)
+         (patches (search-patches "xnnpack-remove-broken-tests.patch"))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (ice-9 textual-ports)
+                    (srfi srfi-26)))
+         (snippet
+          '(begin
+             ;; Remove autogenerated files
+             (for-each
+              (lambda (dir)
+                (let ((gendir (string-append "src/" dir "/gen")))
+                  (when (file-exists? gendir)
+                    (delete-file-recursively gendir)
+                    ;; Needed for the scripts generating the files
+                    (mkdir gendir))))
+              (scandir "src" (negate (cut member <> '("." "..")))))
+             (delete-file-recursively "google3")
+             (delete-file "cmake/microkernels.cmake")
+             ;; Additional autogenerated files which contain the string "Auto-generated file"
+             (for-each
+              (lambda (dir)
+                (for-each
+                 (lambda (name)
+                   (let ((path (string-append dir "/" name)))
+                     (when (call-with-input-file path
+                             (lambda (port)
+                               (string-contains
+                                (get-string-all port)
+                                "Auto-generated file")))
+                       (delete-file path))))
+                 (scandir dir (negate (cut member <> '("." ".."))))))
+              '("test" "bench" "eval" "models" "src/enums" "src/xnnpack"))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:configure-flags '("-DXNNPACK_USE_SYSTEM_LIBS=YES"
+       (list
+        #:build-type "Release" ;; Debugging symbols require a lot of disk space
+        #:configure-flags ''("-DXNNPACK_USE_SYSTEM_LIBS=YES"
                              "-DBUILD_SHARED_LIBS=ON"
+                             "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
                              "-DXNNPACK_LIBRARY_TYPE=shared"
-                             "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                              "-DXNNPACK_BUILD_BENCHMARKS=FALSE")
-
-         ;; FIXME: Building tests leads to a CMake error:
-         ;;
-         ;;   ADD_LIBRARY cannot create target "all_microkernels" because
-         ;;   another target with the same name already exists.
-         #:tests? #f))
+        #:modules '((ice-9 ftw)
+                    (guix build cmake-build-system)
+                    (guix build utils))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'fix-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("TARGET_INCLUDE_DIRECTORIES\\((pthreadpool|cpuinfo).*") "")
+                  ((".*IF\\(NOT TARGET gtest\\).*")
+                   "IF(FALSE)\n")
+                  (("SET\\(CMAKE_CXX_STANDARD 11\\)")
+                   "SET(CMAKE_CXX_STANDARD 14)")
+                  (("AMD64") "x86_64"))))
+            (add-after 'patch-source-shebangs 'generate-files
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (when (and (string-prefix? "generate" name)
+                              (string-suffix? ".sh" name)
+                              (not (equal? "generate-amalgamation.sh" name)))
+                     (display (string-append name "\n"))
+                     (invoke "bash" (string-append "scripts/" name))))
+                 (scandir "scripts"))
+                ;; These need to run after the above scripts
+                (display "Remaining files\n")
+                (invoke "python3" "tools/update-microkernels.py")
+                (substitute* "tools/amalgamate-microkernels.py"
+                  (("BUILD") "BUILD.bazel"))
+                (invoke "bash" "scripts/generate-amalgamation.sh"))))))
       (inputs
-       (list cpuinfo
+       (list clog
+             cpuinfo
              pthreadpool
              googletest
              googlebenchmark
              fxdiv
              fp16
              psimd))
+      (native-inputs (list python-pyyaml python-wrapper))
       (synopsis "Optimized floating-point neural network inference operators")
       (description
        "XNNPACK is a highly optimized library of floating-point neural network
diff --git a/gnu/packages/patches/xnnpack-remove-broken-tests.patch b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
new file mode 100644
index 0000000000..529dd2590c
--- /dev/null
+++ b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
@@ -0,0 +1,335 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 95df99eae..ab57d5efa 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -978,16 +978,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+-    ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(argmax-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(argmax-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME argmax-pooling-nhwc-test COMMAND argmax-pooling-nhwc-test)
+-
+-    ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1066,11 +1056,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(copy-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME copy-nc-eager-test COMMAND copy-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+-
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-nchw2nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(depth-to-space-nchw2nhwc-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1116,11 +1101,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+-
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1146,11 +1126,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1191,11 +1166,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+-
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1312,16 +1282,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(fusion-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fusion-test COMMAND fusion-test)
+ 
+-    ADD_EXECUTABLE(memory-planner-test test/memory-planner-test.cc)
+-    TARGET_INCLUDE_DIRECTORIES(memory-planner-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(memory-planner-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME memory-planner-test COMMAND memory-planner-test)
+-
+-    ADD_EXECUTABLE(subgraph-fp16-test test/subgraph-fp16.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subgraph-fp16-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subgraph-fp16-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME subgraph-fp16-test COMMAND subgraph-fp16-test)
+-
+     ADD_EXECUTABLE(subgraph-nchw-test test/subgraph-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(subgraph-nchw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(subgraph-nchw-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1347,226 +1307,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_INCLUDE_DIRECTORIES(argmax-pooling-2d-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(argmax-pooling-2d-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME argmax-pooling-2d-test COMMAND argmax-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+-    TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+-
+-    ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+-    TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+-
+-    ADD_EXECUTABLE(clamp-test test/clamp.cc)
+-    TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME clamp-test COMMAND clamp-test)
+-
+-    ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate2-test COMMAND concatenate2-test)
+-
+-    ADD_EXECUTABLE(concatenate3-test test/concatenate3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate3-test COMMAND concatenate3-test)
+-
+-    ADD_EXECUTABLE(concatenate4-test test/concatenate4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate4-test COMMAND concatenate4-test)
+-
+-    ADD_EXECUTABLE(convert-test test/convert.cc)
+-    TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME convert-test COMMAND convert-test)
+-
+-    ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+-
+-    ADD_EXECUTABLE(copy-test test/copy.cc)
+-    TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME copy-test COMMAND copy-test)
+-
+-    ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+-    SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+-
+-    ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+-    TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+-
+-    ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+-
+-    ADD_EXECUTABLE(divide2-test test/divide2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME divide2-test COMMAND divide2-test)
+-
+-    ADD_EXECUTABLE(elu-test test/elu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME elu-test COMMAND elu-test)
+-
+-    ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+-
+-    ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+-
+-    ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+-
+-    ADD_EXECUTABLE(floor-test test/floor.cc)
+-    TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME floor-test COMMAND floor-test)
+-
+-    ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+-    TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+-    TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+-
+-    ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+-
+-    ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+-
+-    ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+-
+-    ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+-
+-    ADD_EXECUTABLE(negate-test test/negate.cc)
+-    TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME negate-test COMMAND negate-test)
+-
+-    ADD_EXECUTABLE(prelu-test test/prelu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME prelu-test COMMAND prelu-test)
+-
+-    ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+-    SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+-
+-    ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+-    SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+-
+-    ADD_EXECUTABLE(softmax-test test/softmax.cc)
+-    TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME softmax-test COMMAND softmax-test)
+-
+-    ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+-
+-    ADD_EXECUTABLE(square-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-test COMMAND square-test)
+-
+-    ADD_EXECUTABLE(square-root-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-root-test COMMAND square-root-test)
+-
+-    ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+-    TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+-
+-    ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+-
+-    ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+-
+-    ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+-
+-    ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+-
+-    ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+-
+-    ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+   # ---[ Normalization unit tests
+@@ -2834,21 +2574,7 @@ IF(XNNPACK_BUILD_TESTS)
+     ADD_EXECUTABLE(microkernel-utils-test test/microkernel-utils.cc)
+     TARGET_INCLUDE_DIRECTORIES(microkernel-utils-test PRIVATE include src)
+     TARGET_LINK_LIBRARIES(microkernel-utils-test PRIVATE microkernel-utils gtest gtest_main pthreadpool)
+-
+-    ADD_EXECUTABLE(operator-utils-test test/operator-utils.cc)
+-    TARGET_INCLUDE_DIRECTORIES(operator-utils-test PRIVATE include src)
+-    TARGET_LINK_LIBRARIES(operator-utils-test PRIVATE XNNPACK gtest gtest_main pthreadpool)
+   ENDIF()
+-
+-  ADD_EXECUTABLE(packing-test test/packing.cc)
+-  TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+-
+-  ADD_EXECUTABLE(indirection-test test/indirection.cc)
+-  TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+ # ---[ XNNPACK microbenchmarks
diff --git a/gnu/packages/patches/xnnpack-system-libraries.patch b/gnu/packages/patches/xnnpack-system-libraries.patch
index bc9225e927..a711aa0d6c 100644
--- a/gnu/packages/patches/xnnpack-system-libraries.patch
+++ b/gnu/packages/patches/xnnpack-system-libraries.patch
@@ -2,1794 +2,2659 @@ This patch allows the build process to use the provided dependencies instead
 of adding their source as CMake sub-directories (in which case "make install"
 would install googletest's and googlebenchmark's libraries and headers).
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 177b98d5..937385c3 100755
---- CMakeLists.txt	2022-07-06 22:35:09.748104656 +0200
-+++ CMakeLists.txt	2022-07-06 22:47:34.504666953 +0200
-@@ -6608,10 +6608,6 @@
+diff a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
+@@ -850,25 +850,8 @@
+     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
    ENDIF()
  ENDIF()
- TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
+ IF(XNNPACK_BUILD_LIBRARY)
+   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
+-  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
+   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
+ ENDIF()
  
- # ---[ Configure FXdiv
- IF(NOT TARGET fxdiv)
-@@ -6630,9 +6626,6 @@
+@@ -889,12 +872,6 @@
      SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
+-IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
+-ENDIF()
  
  # ---[ Configure FP16
  IF(NOT TARGET fp16)
-@@ -6651,10 +6644,6 @@
+@@ -913,17 +890,7 @@
      SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
+ IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
+-
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
+   INSTALL(TARGETS XNNPACK
+       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -943,7 +910,7 @@
+   # Helper libraries
+   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
+   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
+-  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
++  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
+   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
+@@ -960,22 +927,22 @@
+     # ---[ Build operator-level unit tests
+     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
+ 
+     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
+ 
+     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
+ 
+     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+@@ -985,27 +952,27 @@
+ 
+     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
+ 
+     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
+@@ -1015,12 +982,12 @@
+ 
+     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
+ 
+     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
+ 
+     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
+@@ -1035,25 +1002,25 @@
+ 
+     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
+ 
+     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
+ 
+     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
+     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
+     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
+     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
+ 
+     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
+@@ -1068,7 +1035,7 @@
+ 
+     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+@@ -1083,197 +1050,197 @@
+ 
+     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
+ 
+     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
+ 
+     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
+ 
+     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
+ 
+     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
+ 
+     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
+ 
+     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
+ 
+     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
+ 
+     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
+ 
+     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
+ 
+     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
+ 
+     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
+@@ -1293,12 +1260,12 @@
+ 
+     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
+ 
+     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
+ 
+     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
+@@ -1350,22 +1317,22 @@
+ 
+     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+ 
+     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+ 
+     ADD_EXECUTABLE(clamp-test test/clamp.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME clamp-test COMMAND clamp-test)
+ 
+     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+@@ -1385,187 +1352,187 @@
+ 
+     ADD_EXECUTABLE(convert-test test/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME convert-test COMMAND convert-test)
+ 
+     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+ 
+     ADD_EXECUTABLE(copy-test test/copy.cc)
+     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME copy-test COMMAND copy-test)
+ 
+     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+ 
+     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+ 
+     ADD_EXECUTABLE(divide2-test test/divide2.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME divide2-test COMMAND divide2-test)
+ 
+     ADD_EXECUTABLE(elu-test test/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME elu-test COMMAND elu-test)
+ 
+     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+ 
+     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+ 
+     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+ 
+     ADD_EXECUTABLE(floor-test test/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME floor-test COMMAND floor-test)
+ 
+     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+ 
+     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+ 
+     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+ 
+     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+ 
+     ADD_EXECUTABLE(negate-test test/negate.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME negate-test COMMAND negate-test)
+ 
+     ADD_EXECUTABLE(prelu-test test/prelu.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME prelu-test COMMAND prelu-test)
+ 
+     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+ 
+     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
+     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+ 
+     ADD_EXECUTABLE(softmax-test test/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME softmax-test COMMAND softmax-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+ 
+     ADD_EXECUTABLE(square-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-test COMMAND square-test)
+ 
+     ADD_EXECUTABLE(square-root-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-root-test COMMAND square-root-test)
+ 
+     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+ 
+     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+ 
+     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+ 
+     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+ 
+     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+ 
+     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+ 
+     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+@@ -1591,355 +1558,355 @@
  
- INSTALL(TARGETS XNNPACK
-     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -6705,7 +6694,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(add-nd-test add-nd-test)
- 
-   ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -6759,7 +6748,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(clamp-nc-test clamp-nc-test)
- 
-   ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -6777,7 +6766,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convert-nc-test convert-nc-test)
- 
-   ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-@@ -6786,7 +6775,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nhwc-test convolution-nhwc-test)
- 
-   ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-@@ -6795,7 +6784,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nchw-test convolution-nchw-test)
- 
-   ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -6813,7 +6802,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(deconvolution-nhwc-test deconvolution-nhwc-test)
- 
-   ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -6840,7 +6829,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(divide-nd-test divide-nd-test)
- 
-   ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-@@ -6858,7 +6847,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(fully-connected-nc-test fully-connected-nc-test)
- 
-   ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-@@ -6876,7 +6865,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-nwc-test global-average-pooling-nwc-test)
- 
-   ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-@@ -6885,7 +6874,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-ncw-test global-average-pooling-ncw-test)
- 
-   ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-@@ -6894,7 +6883,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(hardswish-nc-test hardswish-nc-test)
- 
-   ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-@@ -6903,7 +6892,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(leaky-relu-nc-test leaky-relu-nc-test)
- 
-   ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-@@ -6912,7 +6901,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(max-pooling-nhwc-test max-pooling-nhwc-test)
- 
-   ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-@@ -6921,7 +6910,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(maximum-nd-test maximum-nd-test)
- 
-   ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-@@ -6930,7 +6919,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(minimum-nd-test minimum-nd-test)
- 
-   ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-@@ -6939,7 +6928,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(multiply-nd-test multiply-nd-test)
- 
-   ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-@@ -6957,7 +6946,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(prelu-nc-test prelu-nc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-@@ -6966,7 +6955,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nhwc-test resize-bilinear-nhwc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-@@ -6975,7 +6964,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nchw-test resize-bilinear-nchw-test)
- 
-   ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-@@ -7029,7 +7018,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(subtract-nd-test subtract-nd-test)
- 
-   ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -7084,7 +7073,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-f32-vcvt-test f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-minmax-test test/f16-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7093,7 +7082,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-dwconv-minmax-test f16-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7102,7 +7091,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-gavgpool-minmax-test f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7111,7 +7100,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-gemm-minmax-test f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7120,7 +7109,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-ibilinear-test f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc $<TARGET_OBJECTS:all_microkernels>  $<TARGET_OBJECTS:packing>)
-@@ -7129,7 +7118,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-igemm-minmax-test f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7138,7 +7127,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-maxpool-minmax-test f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7147,7 +7136,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-spmm-minmax-test f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7156,7 +7145,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
+ 
+   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
+ 
+   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vadd-minmax-test f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7165,7 +7154,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vaddc-minmax-test f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7174,7 +7163,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vclamp-test f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7183,7 +7172,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
+ 
+   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdiv-minmax-test f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7192,7 +7181,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdivc-minmax-test f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7201,7 +7190,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrdivc-minmax-test f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7210,7 +7199,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
+ 
+   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vhswish-test f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7219,7 +7208,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
+ 
+   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vlrelu-test f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7228,7 +7217,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmax-test f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7237,7 +7226,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmaxc-test f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7246,7 +7235,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmin-test f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7255,7 +7244,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
+ 
+   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vminc-test f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7264,7 +7253,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
+ 
+   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmul-minmax-test f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7273,7 +7262,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulc-minmax-test f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7282,7 +7271,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulcaddc-minmax-test f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7291,7 +7280,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
+ 
+   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-prelu-test f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7300,7 +7289,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
+ 
+   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
+ 
+   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
+ 
+   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsub-minmax-test f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7309,7 +7298,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsubc-minmax-test f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7318,7 +7307,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrsubc-minmax-test f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7327,7 +7316,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-argmaxpool-test f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7336,7 +7325,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
+ 
+   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-avgpool-minmax-test f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7345,7 +7334,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc-test f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7354,7 +7343,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc2chw-test f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-test test/f32-dwconv.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7363,7 +7352,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-test f32-dwconv-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7372,7 +7361,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv2d-chw-test f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-minmax-test test/f32-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7381,7 +7370,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-minmax-test f32-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7390,7 +7379,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-f16-vcvt-test f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7399,7 +7388,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qs8-vcvt-test f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7408,7 +7397,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qu8-vcvt-test f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7417,7 +7406,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-cw-test f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7426,7 +7415,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-minmax-test f32-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemm-test test/f32-gemm.cc test/f32-gemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7435,7 +7424,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-test f32-gemm-test)
- 
-   ADD_EXECUTABLE(f32-gemm-relu-test test/f32-gemm-relu.cc test/f32-gemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7444,7 +7433,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-relu-test f32-gemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-gemm-minmax-test test/f32-gemm-minmax.cc test/f32-gemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7453,7 +7442,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-minmax-test f32-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemminc-minmax-test test/f32-gemminc-minmax.cc test/f32-gemminc-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7462,7 +7451,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemminc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemminc-minmax-test f32-gemminc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7471,7 +7460,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
+ 
+@@ -1975,13 +1942,13 @@
+ 
+   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-test f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7480,7 +7469,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-chw-test f32-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f32-igemm-test test/f32-igemm.cc test/f32-igemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7489,7 +7478,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-test f32-igemm-test)
- 
-   ADD_EXECUTABLE(f32-igemm-relu-test test/f32-igemm-relu.cc test/f32-igemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7498,7 +7487,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-relu-test f32-igemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-igemm-minmax-test test/f32-igemm-minmax.cc test/f32-igemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7511,7 +7500,7 @@
-     # Work-around for "too many sections" error
-     TARGET_COMPILE_OPTIONS(f32-igemm-minmax-test PRIVATE "$<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>>:-Wa,-mbig-obj>")
-   ENDIF()
--  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-minmax-test f32-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7520,7 +7509,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
+ 
+@@ -2016,13 +1983,13 @@
+ 
+   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-maxpool-minmax-test f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7529,7 +7518,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-pavgpool-minmax-test f32-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ppmm-minmax-test test/f32-ppmm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7538,7 +7527,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-ppmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-ppmm-minmax-test f32-ppmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7547,7 +7536,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
+ 
+@@ -2034,259 +2001,259 @@
+ 
+   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-prelu-test f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7556,7 +7545,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddexpminusmax-test f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7565,7 +7554,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddextexp-test f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7574,7 +7563,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddstoreexpminusmax-test f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7583,7 +7572,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-rmax-test f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7592,7 +7581,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
+ 
+   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-spmm-minmax-test f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7601,7 +7590,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vabs-test f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7610,7 +7599,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-test f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7619,7 +7608,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-minmax-test f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7628,7 +7617,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-relu-test f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7637,7 +7626,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-test f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7646,7 +7635,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-minmax-test f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7655,7 +7644,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-relu-test f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7664,7 +7653,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vclamp-test f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7673,7 +7662,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
+ 
+   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vhswish-test f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7682,7 +7671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-test f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7691,7 +7680,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-minmax-test f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7700,7 +7689,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-relu-test f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7709,7 +7698,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-test f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7718,7 +7707,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-minmax-test f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7727,7 +7716,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-relu-test f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7736,7 +7725,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-test f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7745,7 +7734,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-minmax-test f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7754,7 +7743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-relu-test f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7763,7 +7752,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-velu-test f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7772,7 +7761,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vlrelu-test f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7781,7 +7770,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmax-test f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7790,7 +7779,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmaxc-test f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7799,7 +7788,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmin-test f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7808,7 +7797,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
+ 
+   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vminc-test f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7817,7 +7806,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-test f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7826,7 +7815,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-minmax-test f32-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7835,7 +7824,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-relu-test f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7844,7 +7833,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-test f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7853,7 +7842,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-minmax-test f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7862,7 +7851,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-relu-test f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7871,7 +7860,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulcaddc-minmax-test f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7880,7 +7869,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vneg-test f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7889,7 +7878,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
+ 
+   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrelu-test f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7898,7 +7887,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndne-test f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7907,7 +7896,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
+ 
+   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndz-test f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7916,7 +7905,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
+ 
+   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndu-test f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7925,7 +7914,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndd-test f32-vrndd-test)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-test test/f32-vscaleexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7934,7 +7923,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleexpminusmax-test f32-vscaleexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-test test/f32-vscaleextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7943,7 +7932,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleextexp-test f32-vscaleextexp-test)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7952,7 +7941,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
+ 
+@@ -2304,91 +2271,91 @@
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsigmoid-test f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7961,7 +7950,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqr-test f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7970,7 +7959,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiff-test f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7979,7 +7968,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiffc-test f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7988,7 +7977,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrt-test f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7997,7 +7986,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-test f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8006,7 +7995,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-minmax-test f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8015,7 +8004,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-relu-test f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8024,7 +8013,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-test f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8033,7 +8022,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-minmax-test f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8042,7 +8031,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-relu-test f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8051,7 +8040,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-test f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8060,7 +8049,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-minmax-test f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8069,7 +8058,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-relu-test f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-minmax-fp32-test test/qc8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8078,7 +8067,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qc8-dwconv-minmax-fp32-test qc8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-gemm-minmax-fp32-test test/qc8-gemm-minmax-fp32.cc test/qc8-gemm-minmax-fp32-2.cc test/qc8-gemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8087,7 +8076,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-gemm-minmax-fp32-test qc8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-igemm-minmax-fp32-test test/qc8-igemm-minmax-fp32.cc test/qc8-igemm-minmax-fp32-2.cc test/qc8-igemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8096,7 +8085,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-igemm-minmax-fp32-test qc8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-fp32-test test/qs8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8105,7 +8094,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-fp32-test qs8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-rndnu-test test/qs8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8114,7 +8103,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-rndnu-test qs8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8123,7 +8112,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
+ 
+   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
+ 
+@@ -2406,31 +2373,31 @@
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-f32-vcvt-test qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8132,7 +8121,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-fp32-test qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8141,7 +8130,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-rndnu-test qs8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-fp32-test test/qs8-gemm-minmax-fp32.cc test/qs8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8150,7 +8139,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-fp32-test qs8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-rndnu-test test/qs8-gemm-minmax-rndnu.cc test/qs8-gemm-minmax-rndnu-2.cc test/qs8-gemm-minmax-rndnu-3.cc test/qs8-gemm-minmax-rndnu-4.cc test/qs8-gemm-minmax-rndnu-5.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8159,7 +8148,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-rndnu-test qs8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-fp32-test test/qs8-igemm-minmax-fp32.cc test/qs8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8168,7 +8157,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-fp32-test qs8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-rndnu-test test/qs8-igemm-minmax-rndnu.cc test/qs8-igemm-minmax-rndnu-2.cc test/qs8-igemm-minmax-rndnu-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8177,7 +8166,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-rndnu-test qs8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8186,7 +8175,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2461,81 +2428,81 @@
+   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-requantization-test qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8195,7 +8184,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
+ 
+   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vadd-minmax-test qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8204,7 +8193,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vaddc-minmax-test qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8213,7 +8202,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmul-minmax-fp32-test qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8222,7 +8211,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmulc-minmax-fp32-test qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-test test/qu8-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8231,7 +8220,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-avgpool-minmax-test qu8-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-fp32-test test/qu8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8240,7 +8229,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-fp32-test qu8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-rndnu-test test/qu8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8249,7 +8238,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-rndnu-test qu8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8258,7 +8247,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-f32-vcvt-test qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8267,7 +8256,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-fp32-test qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8276,7 +8265,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-rndnu-test qu8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-fp32-test test/qu8-gemm-minmax-fp32.cc test/qu8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8285,7 +8274,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-fp32-test qu8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-rndnu-test test/qu8-gemm-minmax-rndnu.cc test/qu8-gemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8294,7 +8283,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-rndnu-test qu8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-fp32-test test/qu8-igemm-minmax-fp32.cc test/qu8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8303,7 +8292,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-fp32-test qu8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-rndnu-test test/qu8-igemm-minmax-rndnu.cc test/qu8-igemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8312,7 +8301,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-rndnu-test qu8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8321,7 +8310,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2566,161 +2533,161 @@
+   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-requantization-test qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8330,7 +8319,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
+ 
+   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vadd-minmax-test qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8339,7 +8328,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vaddc-minmax-test qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8348,7 +8337,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-fp32-test qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8357,7 +8346,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-rndnu-test qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8366,7 +8355,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-fp32-test qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8375,7 +8364,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-rndnu-test qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8384,7 +8373,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
+ 
+   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
+ 
+   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
+ 
+   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
+ 
+   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
+ 
+   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-ibilinear-test s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8393,7 +8382,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-maxpool-minmax-test s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8402,7 +8391,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-vclamp-test s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8411,7 +8400,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
+ 
+   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-lut32norm-test u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8420,7 +8409,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
+ 
+   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-ibilinear-test u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8429,7 +8418,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-maxpool-minmax-test u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8438,7 +8427,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-rmax-test u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8447,7 +8436,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
+ 
+   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-vclamp-test u8-vclamp-test)
- 
-   ADD_EXECUTABLE(x8-transpose-test test/x8-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8456,7 +8445,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-transpose-test x8-transpose-test)
- 
-   ADD_EXECUTABLE(x16-transpose-test test/x16-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8465,7 +8454,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x16-transpose-test x16-transpose-test)
- 
-   ADD_EXECUTABLE(x32-packx-test test/x32-packx.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8474,7 +8463,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-packx-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-packx-test x32-packx-test)
- 
-   ADD_EXECUTABLE(x32-unpool-test test/x32-unpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8483,7 +8472,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-unpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-unpool-test x32-unpool-test)
- 
-   ADD_EXECUTABLE(x32-depthtospace2d-chw2hwc-test test/x32-depthtospace2d-chw2hwc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8492,7 +8481,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-depthtospace2d-chw2hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-depthtospace2d-chw2hwc-test x32-depthtospace2d-chw2hwc-test)
- 
-   ADD_EXECUTABLE(x32-transpose-test test/x32-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8501,7 +8490,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-transpose-test x32-transpose-test)
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8510,7 +8499,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
+ 
+@@ -2762,25 +2729,25 @@
+ 
+   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-zip-test x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8519,7 +8508,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
+ 
+   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
    TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x64-transpose-test x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8528,7 +8517,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
+ 
+   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-lut-test x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8537,7 +8526,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
+ 
+   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-zip-test x8-zip-test)
- 
-   ADD_EXECUTABLE(xx-fill-test test/xx-fill.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8546,7 +8535,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-fill-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-fill-test xx-fill-test)
- 
-   ADD_EXECUTABLE(xx-pad-test test/xx-pad.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8555,7 +8544,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-pad-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-pad-test xx-pad-test)
- 
-   ADD_EXECUTABLE(jit-test test/jit.cc)
-@@ -8682,7 +8671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
+ 
+@@ -2842,12 +2809,12 @@
+ 
+   ADD_EXECUTABLE(packing-test test/packing.cc)
+   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+ 
+   ADD_EXECUTABLE(indirection-test test/indirection.cc)
+   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+@@ -2864,7 +2831,7 @@
+   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
+-  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
+@@ -2873,134 +2840,134 @@
+   # ---[ Build accuracy microbenchmarks
+   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
+   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   # ---[ Build accuracy tests
+   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-f16-cvt-eval PROPERTIES
-@@ -8690,7 +8679,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qs8-cvt-eval PROPERTIES
-@@ -8698,7 +8687,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qu8-cvt-eval PROPERTIES
-@@ -8706,7 +8695,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-exp-eval PROPERTIES
-@@ -8714,7 +8703,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expm1minus-eval PROPERTIES
-@@ -8722,7 +8711,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expminus-eval PROPERTIES
-@@ -8730,7 +8719,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundne-eval PROPERTIES
-@@ -8738,7 +8727,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundd-eval PROPERTIES
-@@ -8746,7 +8735,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundu-eval PROPERTIES
-@@ -8754,7 +8743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundz-eval PROPERTIES
-@@ -8762,7 +8751,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo gtest gtest_main)
+-  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
  
-   # ---[ Build end-to-end microbenchmarks
-   ADD_LIBRARY(bench-models STATIC
+   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   IF(XNNPACK_BUILD_LIBRARY)
+@@ -3030,7 +2997,7 @@
+       models/qu8-mobilenet-v2.cc)
+     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
+ 
+     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
+@@ -3039,7 +3006,7 @@
+ 
+     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
+@@ -3049,33 +3016,33 @@
+ 
+     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     # ---[ Build operator-level microbenchmarks
+     ADD_EXECUTABLE(abs-bench bench/abs.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
+@@ -3083,11 +3050,11 @@
+ 
+     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
+     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
+@@ -3095,11 +3062,11 @@
+ 
+     ADD_EXECUTABLE(convert-bench bench/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
+@@ -3107,23 +3074,23 @@
+ 
+     ADD_EXECUTABLE(elu-bench bench/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(floor-bench bench/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
+@@ -3139,7 +3106,7 @@
+ 
+     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
+@@ -3161,378 +3128,378 @@
+   # ---[ Build microkernel-level microbenchmarks
+   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
+   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
+   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ ENDIF()
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 24/31] gnu: Remove xnnpack-for-torch2.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (22 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 25/31] gnu: Add qnnpack-pytorch David Elsing
                     ` (7 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (xnnpack-for-torch2): Delete variable.
* gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |    1 -
 gnu/packages/machine-learning.scm             |   28 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------------
 3 files changed, 2689 deletions(-)
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6d5001c617..a66d00919f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2206,7 +2206,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
   %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
-  %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ca3772aca8..24422e6965 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4191,34 +4191,6 @@ (define-public xnnpack
 TensorFlow.js, PyTorch, and MediaPipe.")
       (license license:bsd-3))))
 
-(define-public xnnpack-for-torch2
-  ;; There's currently no tag on this repo.
-  (let ((version "0.0")
-        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
-        (revision "3"))
-    (package
-      (inherit xnnpack)
-      (name "xnnpack")
-      (version (git-version version revision commit))
-      (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
-                (patches (search-patches "xnnpack-for-torch2-system-libraries.patch"))))
-      (arguments
-       (list
-        #:tests? #false
-        #:configure-flags '(list "-DXNNPACK_USE_SYSTEM_LIBS=YES"
-                                 "-DBUILD_SHARED_LIBS=ON"
-                                 "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-                                 "-DXNNPACK_LIBRARY_TYPE=shared"
-                                 "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
-                                 "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
-
 (define-public fbgemm
   (package
     (name "fbgemm")
diff --git a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch b/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
deleted file mode 100644
index a711aa0d6c..0000000000
--- a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
+++ /dev/null
@@ -1,2660 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
-@@ -850,25 +850,8 @@
-     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
- IF(XNNPACK_BUILD_LIBRARY)
-   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
-   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
- ENDIF()
- 
-@@ -889,12 +872,6 @@
-     SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
--IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--ENDIF()
- 
- # ---[ Configure FP16
- IF(NOT TARGET fp16)
-@@ -913,17 +890,7 @@
-     SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
--TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
- IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
--
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
-   INSTALL(TARGETS XNNPACK
-       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -943,7 +910,7 @@
-   # Helper libraries
-   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
-   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
--  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
-+  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
-   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
-@@ -960,22 +927,22 @@
-     # ---[ Build operator-level unit tests
-     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
- 
-     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
- 
-     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
- 
-     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
- 
-     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -985,27 +952,27 @@
- 
-     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
- 
-     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
-@@ -1015,12 +982,12 @@
- 
-     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
- 
-     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
- 
-     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -1035,25 +1002,25 @@
- 
-     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
- 
-     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
- 
-     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
-     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
- 
-     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
- 
-     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -1068,7 +1035,7 @@
- 
-     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
- 
-     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -1083,197 +1050,197 @@
- 
-     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
- 
-     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
- 
-     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
- 
-     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
- 
-     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
- 
-     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
- 
-     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
- 
-     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
- 
-     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
- 
-     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
- 
-     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
- 
-     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
- 
-     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
- 
-     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
- 
-     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
- 
-     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
- 
-     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
- 
-     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
- 
-     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
- 
-     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
- 
-     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
- 
-     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
- 
-     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
- 
-     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
- 
-     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -1293,12 +1260,12 @@
- 
-     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
- 
-     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
- 
-     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
-@@ -1350,22 +1317,22 @@
- 
-     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
- 
-     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
- 
-     ADD_EXECUTABLE(clamp-test test/clamp.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME clamp-test COMMAND clamp-test)
- 
-     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
-@@ -1385,187 +1352,187 @@
- 
-     ADD_EXECUTABLE(convert-test test/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME convert-test COMMAND convert-test)
- 
-     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
-     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
- 
-     ADD_EXECUTABLE(copy-test test/copy.cc)
-     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME copy-test COMMAND copy-test)
- 
-     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
-     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
- 
-     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
-     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
- 
-     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
-     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
- 
-     ADD_EXECUTABLE(divide2-test test/divide2.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME divide2-test COMMAND divide2-test)
- 
-     ADD_EXECUTABLE(elu-test test/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME elu-test COMMAND elu-test)
- 
-     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
- 
-     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
- 
-     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
- 
-     ADD_EXECUTABLE(floor-test test/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME floor-test COMMAND floor-test)
- 
-     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
- 
-     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
- 
-     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
- 
-     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
- 
-     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
- 
-     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
- 
-     ADD_EXECUTABLE(negate-test test/negate.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME negate-test COMMAND negate-test)
- 
-     ADD_EXECUTABLE(prelu-test test/prelu.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME prelu-test COMMAND prelu-test)
- 
-     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
-     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
- 
-     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
-     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
-     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
- 
-     ADD_EXECUTABLE(softmax-test test/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME softmax-test COMMAND softmax-test)
- 
-     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
- 
-     ADD_EXECUTABLE(square-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-test COMMAND square-test)
- 
-     ADD_EXECUTABLE(square-root-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-root-test COMMAND square-root-test)
- 
-     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
- 
-     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
- 
-     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
- 
-     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
- 
-     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
- 
-     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
- 
-     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
-   ENDIF()
- 
-@@ -1591,355 +1558,355 @@
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
- 
-   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
- 
-   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
- 
-   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
- 
-   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
- 
-   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
- 
-   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
- 
-@@ -1975,13 +1942,13 @@
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
- 
-@@ -2016,13 +1983,13 @@
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
- 
-@@ -2034,259 +2001,259 @@
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
- 
-@@ -2304,91 +2271,91 @@
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
- 
-@@ -2406,31 +2373,31 @@
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
- 
-@@ -2461,81 +2428,81 @@
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
- 
-@@ -2566,161 +2533,161 @@
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
- 
-   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
- 
-   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
- 
-   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
- 
-   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
- 
-   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
- 
-@@ -2762,25 +2729,25 @@
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
- 
-@@ -2842,12 +2809,12 @@
- 
-   ADD_EXECUTABLE(packing-test test/packing.cc)
-   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
- 
-   ADD_EXECUTABLE(indirection-test test/indirection.cc)
-   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
- ENDIF()
- 
-@@ -2864,7 +2831,7 @@
-   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
--  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
-@@ -2873,134 +2840,134 @@
-   # ---[ Build accuracy microbenchmarks
-   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
-   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   # ---[ Build accuracy tests
-   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   IF(XNNPACK_BUILD_LIBRARY)
-@@ -3030,7 +2997,7 @@
-       models/qu8-mobilenet-v2.cc)
-     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
--    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
- 
-     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
-@@ -3039,7 +3006,7 @@
- 
-     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
-@@ -3049,33 +3016,33 @@
- 
-     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     # ---[ Build operator-level microbenchmarks
-     ADD_EXECUTABLE(abs-bench bench/abs.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
-@@ -3083,11 +3050,11 @@
- 
-     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
-     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
-@@ -3095,11 +3062,11 @@
- 
-     ADD_EXECUTABLE(convert-bench bench/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
-@@ -3107,23 +3074,23 @@
- 
-     ADD_EXECUTABLE(elu-bench bench/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(floor-bench bench/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
-@@ -3139,7 +3106,7 @@
- 
-     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
-@@ -3161,378 +3128,378 @@
-   # ---[ Build microkernel-level microbenchmarks
-   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
-   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
-   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- ENDIF()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 25/31] gnu: Add qnnpack-pytorch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (23 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
                     ` (6 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This is an internal fork of QNNPACK in the PyTorch source tree.

* gnu/packages/machine-learning.scm (%python-pytorch-version): New variable.
(%python-pytorch-src): New variable.
(qnnpack-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 127 ++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 24422e6965..6b62d7016b 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4311,6 +4311,133 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define %python-pytorch-version "2.2.1")
+
+(define %python-pytorch-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-version))))
+    (file-name (git-file-name "python-pytorch" %python-pytorch-version))
+    (sha256
+     (base32
+      "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (modules '((guix build utils)))
+    (snippet
+     '(begin
+        ;; Bundled or unused code
+        (for-each
+         (lambda (dir)
+           (when (file-exists? dir)
+             (delete-file-recursively dir)))
+         '("android"
+           "aten/src/ATen/native/cuda/cutlass_extensions"
+           "aten/src/ATen/native/quantized/cpu/qnnpack"
+           "caffe2/mobile/contrib/libopencl-stub"
+           "caffe2/mobile/contrib/libvulkan-stub"
+           "third_party"))
+
+        ;; Autogenerated files
+        (for-each
+         delete-file
+         '("aten/src/ATen/nnapi/nnapi_wrapper.cpp"
+           "aten/src/ATen/nnapi/nnapi_wrapper.h"
+           "caffe2/mobile/contrib/ios/mpscnn/mpscnn_kernels.h"
+           "caffe2/proto/caffe2_legacy_pb2.pyi"
+           "caffe2/proto/caffe2_pb2.pyi"
+           "caffe2/proto/hsm_pb2.pyi"
+           "caffe2/proto/metanet_pb2.pyi"
+           "caffe2/proto/predictor_consts_pb2.pyi"
+           "caffe2/proto/prof_dag_pb2.pyi"
+           "caffe2/proto/torch_pb2.pyi"
+           ;; These files contain just lists of floating point values and
+           ;; might be as well hand-written.
+           ;; "test/cpp/api/init_baseline.h"
+           ;; "test/cpp/api/optim_baseline.h"
+           "test/mobile/test_upgrader_bytecode_table_example.cpp"
+           "torch/csrc/jit/mobile/upgrader_mobile.cpp"
+           "torch/csrc/jit/runtime/decomposition_registry_util.cpp"
+           "torch/csrc/jit/runtime/serialized_shape_function_registry.cpp"
+           "torch/csrc/jit/tensorexpr/external_functions_codegen.cpp"
+           "torch/csrc/jit/serialization/mobile_bytecode_generated.h"))
+        (delete-file-recursively ".github")
+        (for-each
+         (lambda (dir)
+           (for-each
+            delete-file
+            (find-files dir "\\.cu$")))
+         '("aten/src/ATen/native/transformers/cuda/flash_attn/kernels"
+           "aten/src/ATen/native/transformers/cuda/mem_eff_attention/kernels"))))))
+
+(define-public qnnpack-pytorch
+  (package
+    (inherit qnnpack)
+    (name "qnnpack-pytorch")
+    (version (string-append "pytorch-" %python-pytorch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        '(begin
+           (rename-file "aten/src/ATen/native/quantized/cpu/qnnpack"
+                        "../qnnpack")
+           (let ((outdir (getcwd)))
+             (chdir "..")
+             (rename-file outdir "dummy")
+             (rename-file "qnnpack" outdir)
+             (chdir outdir)
+             (delete-file-recursively "deps"))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qnnpack)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("project\\(.*" orig)
+                   (apply
+                    string-append
+                    orig "\n"
+                    (map (lambda (name)
+                           (string-append
+                            "option(" name " \"\" ON)\n"))
+                         '("USE_SYSTEM_CPUINFO" "USE_SYSTEM_FP16" "USE_SYSTEM_FXDIV"
+                           "USE_SYSTEM_PSIMD" "USE_SYSTEM_PTHREADPOOL"))))
+                  (("if.*SOURCE_DIR.*")
+                   "if(FALSE)\n")
+                  (("if\\(NOT TARGET (clog|gtest|benchmark).*")
+                   "if(FALSE)\n")
+                  (("target_link_libraries.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(target_link_libraries.*) fp16 (.*)" _ before after)
+                   (string-append before " " after)))))
+            (add-after 'unpack 'fix-cstring-include
+              (lambda _
+                (substitute* "include/pack_block_sparse.h"
+                  (("#include.*<vector>.*" orig)
+                   (string-append orig "\n#include <cstring>\n")))))
+            (add-after 'install 'install-missing-headers
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (install-file (string-append "../source/include/" name)
+                                 (string-append #$output "/include")))
+                 '("pack_block_sparse.h"
+                   "pytorch_qnnpack.h"
+                   "qnnpack_func.h"))
+                (copy-recursively
+                 "../source/src/qnnpack"
+                 (string-append #$output "/include/qnnpack"))))))
+       ;; Some tests occasionally fail on i686 due to floating point rounding.
+       ((#:tests? _ #t)
+        (not (string-prefix? "i686" (or (%current-target-system)
+                                        (%current-system)))))))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (24 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 25/31] gnu: Add qnnpack-pytorch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
                     ` (5 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

Autogenerated files are also regenerated. The tests can be run, but are
disabled, as they require a long time.

* gnu/packages/machine-learning.scm (python-pytorch): Update to 2.2.1.
[version]: Use %python-pytorch-version.
[source]: Use %python-pytorch-src.
[arguments]: Remove 'make-things-writable phase.  Add 'cmake-patches,
'set-max-jobs, 'codegen1, 'codegen2, 'build2, 'install2 phases. Adjust
'use-system-libraries and 'check phases.
[native-inputs]: Add doxygen, ideep-pytorch, pocketfft-cpp, python-expecttest,
python-pytest-flakefinder, python-pytest-rerunfailures-13,
python-pytest-shard, python-pytest-xdist, python-hypothesis,
python-types-dataclasses, python-typing-extensions-4.10 and valgrind.
[inputs]: Add asmjit, clog, flatbuffers-next, foxi, fxdiv, libuv,
miniz-for-pytorch, qnnpack, qnnpack-pytorch, fbgemm and oneapi-dnnl. Use
nnpack, fbgemm and oneapi-dnnl only for supported systems.
[propagated-inputs]: Add python-filelock, python-fsspec, python-jinja2,
python-networkx, python-optree, python-packaging, python-psutil and
python-sympy. Remove python-cffi and python-six.
(%python-pytorch-src)[source]: Add patches.
* gnu/packages/patches/python-pytorch-runpath.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-system-libraries.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch: Remove file.
* gnu/packages/patches/python-pytorch-fix-codegen.patch: New file.
* gnu/packages/patches/python-pytorch-without-kineto: New file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   3 +-
 gnu/packages/machine-learning.scm             | 333 +++++++++++-------
 ...ython-pytorch-1.9.0-system-libraries.patch | 139 --------
 .../patches/python-pytorch-fix-codegen.patch  | 167 +++++++++
 .../patches/python-pytorch-runpath.patch      |  19 +-
 .../python-pytorch-system-libraries.patch     | 317 +++++++++++++++--
 .../python-pytorch-without-kineto.patch       |  60 ++++
 7 files changed, 737 insertions(+), 301 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a66d00919f..c0b9b3a150 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1929,9 +1929,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
   %D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
+  %D%/packages/patches/python-pytorch-fix-codegen.patch		\
   %D%/packages/patches/python-pytorch-runpath.patch		\
   %D%/packages/patches/python-pytorch-system-libraries.patch	\
-  %D%/packages/patches/python-pytorch-1.9.0-system-libraries.patch \
+  %D%/packages/patches/python-pytorch-without-kineto.patch	\
   %D%/packages/patches/python-robotframework-atest.patch	\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 6b62d7016b..c1fe0e2812 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -105,6 +105,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -123,6 +124,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
@@ -4323,6 +4325,13 @@ (define %python-pytorch-src
     (sha256
      (base32
       "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (patches (search-patches "python-pytorch-system-libraries.patch"
+                             "python-pytorch-runpath.patch"
+                             "python-pytorch-without-kineto.patch"
+                             ;; Some autogeneration scripts depend on the
+                             ;; compile PyTorch library. Therefore, we create
+                             ;; dummy versions which are regenerated later.
+                             "python-pytorch-fix-codegen.patch"))
     (modules '((guix build utils)))
     (snippet
      '(begin
@@ -4442,135 +4451,219 @@ (define-public qnnpack-pytorch
 (define-public python-pytorch
   (package
     (name "python-pytorch")
-    (version "1.13.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "17yxjzwp4zp75fz7czgz9acijzw7dpyqcza50v8y1x7hfg2gw369"))
-              (patches (search-patches "python-pytorch-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-version)
+    (source %python-pytorch-src)
     (build-system python-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'use-system-libraries
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
-                      ;; want to use "system libraries" instead of the bundled
-                      ;; ones.
-                      (setenv "USE_SYSTEM_LIBS" "1")
-
-                      (substitute* "cmake/Dependencies.cmake"
-                        (("if\\(USE_SYSTEM_BIND11\\)")
-                         "if(TRUE)"))
-
-                      ;; XXX: Disable that for simplicity for now.
-                      (setenv "USE_FBGEMM" "0")))
-                  (add-before 'build 'make-things-writable
-                    (lambda _
-                      ;; The 'build_caffe2' function in
-                      ;; 'tools/build_pytorch_libs.py', called from the
-                      ;; top-level 'setup.py', needs write access to this
-                      ;; directory.
-                      (for-each make-file-writable
-                                (find-files "caffe2/proto" "."
-                                            #:directories? #t))))
-                  (replace 'check
-                    (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-                      ;; Run the test suite following the instructions in
-                      ;; 'CONTRIBUTING.md'.  XXX: Unfortunately this doesn't
-                      ;; work, unless you set GUIX_PYTHONPATH presumably.
-                      (when tests?
-                        (add-installed-pythonpath inputs outputs)
-                        (invoke "python" "test/run_test.py"))))
-                  (add-after 'install 'remove-test-executables
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Remove test executables, but keep other executables
-                      ;; such as 'torch_shm_manager' and and .so files such as
-                      ;; 'libtorch_global_deps.so'.
-                      (let ((python-site (site-packages inputs outputs)))
-                        (for-each delete-file
-                                  (find-files python-site
-                                              "(^test_cpp_rpc|_test)$")))))
-                  (add-after 'install 'remove-caffe2-onnx-scripts
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (bin (string-append out "/bin")))
-                        ;; Remove 'convert-caffe2-to-onnx' and
-                        ;; 'convert-onnx-to-caffe2': they seem to be
-                        ;; deprecated and they cause a failure of the
-                        ;; 'sanity-check' phase:
-                        ;;
-                        ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
-                        (for-each delete-file
-                                  (find-files bin "^convert-.*caffe2"))
-
-                        (substitute* (find-files out "^entry_points\\.txt$")
-                          (("^convert-.*" all)
-                           (string-append "# " all "\n")))))))
-
-       ;; XXX: Tests attempt to download data such as
-       ;; <https://raw.githubusercontent.com/pytorch/test-infra/master/stats/slow-tests.json>.
-       ;; We're also missing some Python modules, such as expecttest.
-       #:tests? #f))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'cmake-patches
+            (lambda _
+              (substitute* "cmake/Dependencies.cmake"
+                (("#POCKETFFT_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-native-input "pocketfft-cpp") "/include"))
+                (("#FP16_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-input "fp16") "/include")))))
+          (add-before 'build 'use-system-libraries
+            (lambda _
+              (substitute* '("caffe2/serialize/crc.cc"
+                             "caffe2/serialize/inline_container.cc")
+                (("\"miniz\\.h\"") "<miniz/miniz.h>"))
+              (substitute* "aten/src/ATen/native/vulkan/api/Allocator.h"
+                (("<include/vk_mem_alloc.h>")
+                 "<vk_mem_alloc.h>"))
+              ;; For Vulkan
+              (substitute* "CMakeLists.txt"
+                (("append_cxx_flag.*-Werror=(return-type|range-loop-construct).*") ""))
+              (substitute*
+                  (cons*
+                   "torch/csrc/Module.cpp"
+                   (map
+                    (lambda (name)
+                      (string-append
+                       "torch/utils/benchmark/utils/valgrind_wrapper/"
+                       name))
+                    '("compat_bindings.cpp" "timer_callgrind_template.cpp")))
+                (("<callgrind.h>") "<valgrind/callgrind.h>"))
+              (setenv "USE_FFMPEG" "1")
+              (setenv "USE_VULKAN" "1")
+              (setenv "USE_OPENCV" "1")
+              ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
+              ;; want to use "system libraries" instead of the bundled
+              ;; ones.
+              (setenv "USE_SYSTEM_LIBS" "1")
+              ;; For oneDNN
+              (setenv "USE_MKLDNN" "1")
+              ;; Only works with CUPTI
+              (setenv "USE_KINETO" "0")
+              ;; Prevent CMake error by disabling explicitely
+              (setenv "USE_ITT" "0")))
+          (add-after 'use-system-libraries 'set-max-jobs
+            (lambda _
+              (setenv "MAX_JOBS" (number->string (parallel-job-count)))))
+          (add-after 'set-max-jobs 'codegen1
+            (lambda _
+              (with-directory-excursion "torch/csrc/jit/tensorexpr"
+                (setenv "PYTHONPATH" "../../../..")
+                (invoke "python3" "codegen_external.py")
+                (setenv "PYTHONPATH" #f))
+
+              (invoke "python3" "aten/src/ATen/nnapi/codegen.py")
+
+              (invoke "bash" "tools/gen_flatbuffers.sh")
+
+              ;; Generate dummy files as the generation depends on the compiled
+              ;; library. They are regenerated later.
+              (setenv "PYTHONPATH" ".")
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py"
+                      "dummy")
+              (setenv "PYTHONPATH" #f)
+
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py"
+                      "dummy")
+
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py"
+                      "dummy")))
+          ;; Properly generate autogenerated files ...
+          (add-after 'install 'codegen2
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (add-installed-pythonpath inputs outputs)
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py")
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py")
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py")))
+          ;; ... rebuild their dependencies ...
+          (add-after 'codegen2 'build2
+            (lambda _
+              (invoke "python3" "setup.py" "build")))
+          ;; ... and install again.
+          (add-after 'build2 'install2
+            (lambda _
+              (invoke "python3" "setup.py" "install" (string-append "--prefix=" #$output)
+                      "--no-compile" "--single-version-externally-managed" "--root=/")
+              (invoke "python" "-m" "compileall"
+                      "--invalidation-mode=unchecked-hash" #$output)))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Run the test suite following the instructions in
+              ;; 'CONTRIBUTING.md'. Unfortunately this doesn't work, unless
+              ;; you set PYTHONPATH or GUIX_PYTHONPATH, but this is done in
+              ;; the codegen2 phase already.
+              (when tests?
+                (invoke "python3" "test/run_test.py" "--core"))))
+          (add-after 'install2 'remove-test-executables
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Remove test executables, but keep other executables
+              ;; such as 'torch_shm_manager' and and .so files such as
+              ;; 'libtorch_global_deps.so'.
+              (let ((python-site (site-packages inputs outputs)))
+                (for-each delete-file
+                          (find-files python-site
+                                      "(^test_cpp_rpc|_test)$")))))
+          (add-after 'install2 'remove-caffe2-onnx-scripts
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (bin (string-append out "/bin")))
+                ;; Remove 'convert-caffe2-to-onnx' and
+                ;; 'convert-onnx-to-caffe2': they seem to be
+                ;; deprecated and they cause a failure of the
+                ;; 'sanity-check' phase:
+                ;;
+                ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
+                (for-each delete-file
+                          (find-files bin "^convert-.*caffe2"))
+
+                (substitute* (find-files out "^entry_points\\.txt$")
+                  (("^convert-.*" all)
+                   (string-append "# " all "\n")))))))
+
+      ;; Even only the core tests take a very long time to run.
+      #:tests? #f))
     (native-inputs
-     (list cmake ninja))
+     (list cmake
+           doxygen
+           ideep-pytorch
+           ninja
+           pocketfft-cpp
+           python-expecttest
+           python-pytest-flakefinder
+           python-pytest-rerunfailures-13
+           python-pytest-shard
+           python-pytest-xdist
+           python-hypothesis
+           python-types-dataclasses
+           python-typing-extensions-4.10
+           shaderc
+           valgrind))
     (inputs
-     (list eigen
-           ;; ("fmt" ,fmt)
-           fp16
-           gemmlowp
-           googletest
-           googlebenchmark
-           gloo
-           nnpack
-           openblas
-           openmpi
-           pthreadpool
-           protobuf
-           pybind11
-           sleef
-           xnnpack
-           zstd))
+     (append
+      (list asmjit
+            clog
+            eigen
+            ffmpeg
+            flatbuffers-next
+            fmt
+            foxi
+            fp16
+            fxdiv
+            gemmlowp
+            gloo
+            googletest
+            googlebenchmark
+            libuv
+            miniz-for-pytorch
+            openblas
+            opencv
+            openmpi
+            pthreadpool
+            protobuf
+            pybind11
+            qnnpack
+            qnnpack-pytorch
+            sleef
+            tensorpipe
+            vulkan-headers
+            vulkan-loader
+            vulkan-memory-allocator
+            xnnpack
+            zstd)
+      ;; TODO: fix build on 32 bit systems
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list
+        nnpack
+        fbgemm
+        oneapi-dnnl))))
     (propagated-inputs
-     (list python-astunparse
+     (list cpuinfo
+           onnx ;propagated for its Python modules
+           onnx-optimizer
+           python-astunparse
            python-click
+           python-filelock
+           python-fsspec
+           python-future
+           python-jinja2
+           python-networkx
            python-numpy
+           python-optree
+           python-packaging
+           python-psutil
            python-pyyaml
-           python-cffi
-           python-typing-extensions
-           python-future
-           python-six
            python-requests
-           onnx                             ;propagated for its Python modules
-           onnx-optimizer
-           cpuinfo))
+           python-sympy
+           python-typing-extensions))
     (home-page "https://pytorch.org/")
     (synopsis "Python library for tensor computation and deep neural networks")
     (description
diff --git a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch b/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
deleted file mode 100644
index 76c06520f0..0000000000
--- a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 5d57b9ca78..620cca4e60 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -644,11 +644,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1485,7 +1480,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 50ebb224ce..5953d9ddf7 100644
---- a/caffe2/CMakeLists.txt
-+++ b/caffe2/CMakeLists.txt
-@@ -1632,7 +1632,7 @@ if(BUILD_TEST)
-         if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
-           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
-           if(USE_FBGEMM)
-             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
-           endif()
-@@ -1655,7 +1655,7 @@ if(BUILD_TEST)
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1673,7 +1673,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       cuda_add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1691,7 +1691,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1709,7 +1709,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
-
-diff --git a/torch/lib/c10d/test/CMakeLists.txt b/torch/lib/c10d/test/CMakeLists.txt
-index b74d4b65f7..fc7c207505 100644
---- a/torch/lib/c10d/test/CMakeLists.txt
-+++ b/torch/lib/c10d/test/CMakeLists.txt
-@@ -16,24 +16,24 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp c10d gtest_main)
--c10d_add_test(TCPStoreTest.cpp c10d gtest_main)
-+c10d_add_test(FileStoreTest.cpp c10d gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp c10d gtest_main gtest)
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp c10d gtest_main)
-+  c10d_add_test(HashStoreTest.cpp c10d gtest_main gtest)
- endif()
- 
- if(USE_CUDA)
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main)
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main gtest)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_C10D_NCCL)
--    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main gtest)
-     c10d_add_test(ProcessGroupNCCLErrorsTest.cpp c10d c10d_cuda_test
--        gtest_main)
-+        gtest_main gtest)
-   endif()
- else()
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main gtest)
-   endif()
- endif()
-
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cbb5..6075bdd0a4 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
diff --git a/gnu/packages/patches/python-pytorch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-fix-codegen.patch
new file mode 100644
index 0000000000..cb246b25de
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index bc69b05162..0f8df81de3 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -20,9 +20,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -62,7 +67,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index dab1568580..55c58715fc 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = dict(sorted_version_map_)
+ 
+@@ -378,7 +383,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ 
+ def main() -> None:
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-runpath.patch b/gnu/packages/patches/python-pytorch-runpath.patch
index 7f95b88a2b..2c1724cdb0 100644
--- a/gnu/packages/patches/python-pytorch-runpath.patch
+++ b/gnu/packages/patches/python-pytorch-runpath.patch
@@ -3,10 +3,10 @@ get installed, quite surprisingly, to 'lib/python3.8/site-packages/{bin,lib}'.
 Make sure RUNPATH matches that.
 
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 5b5622f0..30d27e57 100644
+index 74836372..c8eb69d1 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1909,7 +1909,7 @@ if(BUILD_PYTHON)
+@@ -1910,7 +1910,7 @@ if(BUILD_PYTHON)
    if(${BUILDING_WITH_TORCH_LIBS})
      # site-packages/caffe2/python/caffe2_pybind11_state
      # site-packages/torch/lib
@@ -16,7 +16,7 @@ index 5b5622f0..30d27e57 100644
  
    # Must also include `CMAKE_SHARED_LINKER_FLAGS` in linker flags for
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index ee9cf410..f190e69b 100644
+index acc95842..8f8fb7d7 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
 @@ -4,7 +4,7 @@ if(APPLE)
@@ -28,3 +28,16 @@ index ee9cf410..f190e69b 100644
  endif(APPLE)
  # Use separate rpaths during build and install phases
  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
+diff --git a/functorch/CMakeLists.txt b/functorch/CMakeLists.txt
+index f2f32745..db21b656 100644
+--- a/functorch/CMakeLists.txt
++++ b/functorch/CMakeLists.txt
+@@ -21,7 +21,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE pybind::pybind11)
+ 
+ set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+       ${CMAKE_BINARY_DIR}/functorch)
+-set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${_rpath_portable_origin}/../torch/lib")
++set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../torch/lib")
+ 
+ # Copy-pasted prefix/suffix logic for Python extensions from
+ # https://github.com/pytorch/pytorch/blob/33bb8ae350611760139457b85842b1d7edf9aa11/caffe2/CMakeLists.txt#L1975
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
index fd849fd9e2..99f999f32f 100644
--- a/gnu/packages/patches/python-pytorch-system-libraries.patch
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -1,38 +1,104 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
 
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 2c2b967..5ac5fa6 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -371,9 +371,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x|ppc64le)$")
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index d57d7ebb..5b5622f0 100644
+index 7483637..093de40 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1736,7 +1736,7 @@ if(BUILD_TEST)
+@@ -111,9 +111,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -1055,7 +1052,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1396,6 +1392,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ if(USE_MPI)
+   target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX)
+ endif()
+@@ -1653,7 +1650,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1680,7 +1677,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1701,7 +1698,7 @@ if(BUILD_TEST)
          if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
            # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
 -          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
 +          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
            if(USE_FBGEMM)
              target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
            endif()
-@@ -1759,7 +1759,7 @@ if(BUILD_TEST)
+@@ -1715,7 +1712,7 @@ if(BUILD_TEST)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1732,7 +1729,7 @@ if(BUILD_TEST)
    foreach(test_src ${Caffe2_CPU_TEST_SRCS})
      get_filename_component(test_name ${test_src} NAME_WE)
      add_executable(${test_name} "${test_src}")
 -    target_link_libraries(${test_name} torch_library gtest_main)
 +    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     if(USE_OPENMP)
-       # -fopenmp is a compile time flag and as result not guaranteed
-       # to link executable against OpenMP runtime library
-@@ -1785,7 +1785,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1803,7 +1803,7 @@ if(BUILD_TEST)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1795,7 +1792,7 @@ if(BUILD_TEST)
      foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
        get_filename_component(test_name ${test_src} NAME_WE)
        add_executable(${test_name} "${test_src}")
@@ -41,20 +107,66 @@ index d57d7ebb..5b5622f0 100644
        target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
        target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
        add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1821,7 +1821,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
+index acc9584..97275bf 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+@@ -283,7 +283,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -489,19 +489,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -550,13 +537,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -728,11 +708,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
    # this shouldn't be necessary anymore.
    get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
    set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
@@ -66,7 +178,49 @@ index 557ab649..ee9cf410 100644
  
    # We will not need to test benchmark lib itself.
    set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+@@ -810,16 +785,6 @@ if(USE_FBGEMM)
+     if(USE_ASAN)
+       set(USE_SANITIZER "address,undefined" CACHE STRING "-fsanitize options for FBGEMM")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -979,7 +944,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1362,7 +1327,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1529,7 +1493,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1560,7 +1523,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
      endif()
      set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
      message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
@@ -75,8 +229,36 @@ index 557ab649..ee9cf410 100644
    endif()
    include_directories(${FOXI_INCLUDE_DIRS})
    list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1739,9 +1702,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1796,7 +1758,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1805,7 +1767,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
 diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
+index 9d5f064..c3624e5 100644
 --- a/cmake/External/nnpack.cmake
 +++ b/cmake/External/nnpack.cmake
 @@ -40,7 +40,7 @@ endif()
@@ -88,7 +270,7 @@ index a41343cb..6075bdd0 100644
    message(STATUS "Brace yourself, we are building NNPACK")
    set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
  
-@@ -114,6 +114,5 @@ endif()
+@@ -112,6 +112,5 @@ endif()
  # (4) Catch-all: not supported.
  ##############################################################################
  
@@ -97,8 +279,45 @@ index a41343cb..6075bdd0 100644
 -set(USE_NNPACK OFF)
 +set(NNPACK_FOUND TRUE)
 +set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 8793562..9f8fa3d 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,4 +15,4 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+diff --git a/setup.py b/setup.py
+index 81f3c6c..3251cab 100644
+--- a/setup.py
++++ b/setup.py
+@@ -482,13 +482,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         "tools/shared/_utils_internal.py",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h",
+     ]
+     orig_files = [
+         "torch/_utils_internal.py",
+-        "third_party/valgrind-headers/callgrind.h",
+-        "third_party/valgrind-headers/valgrind.h",
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
 diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
+index 5c89748..ef84c57 100644
 --- a/test/cpp/c10d/CMakeLists.txt
 +++ b/test/cpp/c10d/CMakeLists.txt
 @@ -16,14 +16,14 @@ function(c10d_add_test test_src)
@@ -133,7 +352,29 @@ index bf91460c..ef56948f 100644
    endif()
    if(USE_NCCL AND USE_C10D_NCCL)
      # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
    endif()
  else()
    if(USE_GLOO AND USE_C10D_GLOO)
@@ -143,10 +384,10 @@ index bf91460c..ef56948f 100644
  endif()
  
 diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
+index 012471d..d39b625 100644
 --- a/test/cpp/tensorexpr/CMakeLists.txt
 +++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
  # pthreadpool header. For some build environment we need add the dependency
  # explicitly.
  if(USE_PTHREADPOOL)
@@ -154,4 +395,4 @@ index 8fc5a0a1..643202f6 100644
 +  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
  endif()
  if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
+   target_compile_definitions(test_tensorexpr PRIVATE USE_CUDA)
diff --git a/gnu/packages/patches/python-pytorch-without-kineto.patch b/gnu/packages/patches/python-pytorch-without-kineto.patch
new file mode 100644
index 0000000000..f956316866
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-without-kineto.patch
@@ -0,0 +1,60 @@
+Even when building without Kineto, the <ActivityType.h> header is still
+imported and the ActivityType type is used. This patch was copied from
+https://github.com/pytorch/pytorch/pull/111048.
+
+diff --git a/torch/csrc/profiler/kineto_shim.h b/torch/csrc/profiler/kineto_shim.h
+index e92cbf00..68985ab7 100644
+--- a/torch/csrc/profiler/kineto_shim.h
++++ b/torch/csrc/profiler/kineto_shim.h
+@@ -12,7 +12,51 @@
+ #undef USE_KINETO
+ #endif
+ 
++#ifdef USE_KINETO
+ #include <ActivityType.h>
++#else
++namespace libkineto {
++// copied from header
++/*
++ * Copyright (c) Meta Platforms, Inc. and affiliates.
++ * All rights reserved.
++ *
++ * This source code is licensed under the BSD-style license found in the
++ * LICENSE file in the root directory of this source tree.
++ */
++
++// Note : All activity types are not enabled by default. Please add them
++// at correct position in the enum
++enum class ActivityType {
++    // Activity types enabled by default
++    CPU_OP = 0, // cpu side ops
++    USER_ANNOTATION,
++    GPU_USER_ANNOTATION,
++    GPU_MEMCPY,
++    GPU_MEMSET,
++    CONCURRENT_KERNEL, // on-device kernels
++    EXTERNAL_CORRELATION,
++    CUDA_RUNTIME, // host side cuda runtime events
++    CUDA_DRIVER, // host side cuda driver events
++    CPU_INSTANT_EVENT, // host side point-like events
++    PYTHON_FUNCTION,
++    OVERHEAD, // CUPTI induced overhead events sampled from its overhead API.
++
++    // Optional Activity types
++    CUDA_SYNC, // synchronization events between runtime and kernels
++    GLOW_RUNTIME, // host side glow runtime events
++    MTIA_RUNTIME, // host side MTIA runtime events
++    CUDA_PROFILER_RANGE, // CUPTI Profiler range for performance metrics
++    MTIA_CCP_EVENTS, // MTIA ondevice CCP events
++    HPU_OP, // HPU host side runtime event
++    XPU_RUNTIME, // host side xpu runtime events
++
++    ENUM_COUNT, // This is to add buffer and not used for any profiling logic. Add your new type before it.
++    OPTIONAL_ACTIVITY_TYPE_START = CUDA_SYNC,
++};
++}
++
++#endif
+ 
+ #include <torch/csrc/Export.h>
+ #include <torch/csrc/profiler/api.h>
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 27/31] gnu: python-torchvision: Update to 0.17.1.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (25 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
                     ` (4 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-torchvision): Update to 0.17.1.
[source]: Add snippet to remove "android" and "ios" directories.
---
 gnu/packages/machine-learning.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c1fe0e2812..bdcde1b1b3 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5134,7 +5134,7 @@ (define-public python-torchmetrics
 (define-public python-torchvision
   (package
     (name "python-torchvision")
-    (version "0.15.2")
+    (version "0.17.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5144,7 +5144,12 @@ (define-public python-torchvision
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cq2s13vkgg9rljjbrm4g33yxq7q5zqp7f4xm5cq624gvs0wxmi8"))))
+                "094jz0ryzh0yjxf687r61r482fdh3bax8ix2csghraps0z1sns1b"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "android")
+                  (delete-file-recursively "ios")))))
     (build-system pyproject-build-system)
     (arguments
      (list #:tests? #false)) ;the test suite is expensive and there is no easy
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 28/31] gnu: Add ideep-pytorch-for-r-torch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (26 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
                     ` (3 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index bdcde1b1b3..999172fb28 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4313,6 +4313,21 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define-public ideep-pytorch-for-r-torch
+  (package
+    (inherit ideep-pytorch)
+    (version "2.7.3-1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name (package-name ideep-pytorch) version))
+       (sha256
+        (base32
+         "0hdpkhcjry22fjx2zg2r48v7f4ljrclzj0li2pgk76kvyblfbyvm"))))))
+
 (define %python-pytorch-version "2.2.1")
 
 (define %python-pytorch-src
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 29/31] gnu: Add oneapi-dnnl-for-r-torch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (27 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
                     ` (2 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 999172fb28..0bcbaab67f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5849,6 +5849,20 @@ (define-public oneapi-dnnl
     (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
+(define-public oneapi-dnnl-for-r-torch
+  (package
+    (inherit oneapi-dnnl)
+    (version "2.7.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oneapi-src/oneDNN")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name oneapi-dnnl) version))
+       (sha256
+        (base32 "1zyw5rd8x346bb7gac9a7x3saviw3zvp6aqz2z1l9sv163vmjfz6"))))))
+
 (define-public python-gguf
   (package
     (name "python-gguf")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 30/31] gnu: Add qnnpack-pytorch-for-r-torch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (28 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-version): New
variable.
(%python-pytorch-for-r-torch-src): New variable.
(qnnpack-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 0bcbaab67f..4a8aa13d50 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4695,6 +4695,34 @@ (define-public python-pytorch
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
+(define %python-pytorch-for-r-torch-version "2.0.1")
+
+(define %python-pytorch-for-r-torch-src
+  (origin
+    (inherit %python-pytorch-src)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-for-r-torch-version))))
+    (file-name (git-file-name "python-pytorch"
+                              %python-pytorch-for-r-torch-version))
+    (sha256
+     (base32
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+
+(define-public qnnpack-pytorch-for-r-torch
+  (package
+    (inherit qnnpack-pytorch)
+    (version (string-append "pytorch-" %python-pytorch-for-r-torch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-for-r-torch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        (origin-snippet (package-source qnnpack-pytorch)))))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v2 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (29 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
@ 2024-03-12 22:51   ` David Elsing
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-12 22:51 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-src): Add
patches.
(python-pytorch-for-r-torch)[version]: Use
%python-pytorch-for-r-torch-version.
[source]: Use %python-pytorch-for-r-torch-src.
[native-inputs]: Use 'modify-inputs'.
[inputs]: Don't replace xnnpack. Replace qnnpack-pytorch with
qnnpack-pytorch-for-r-torch and oneapi-dnnl with oneapi-dnnl-for-r-torch.
[propagated-inputs]: Don't replace onnx and onnx-optimizer.
[supported-systems]: New field.
* gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen: New file.
* gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch: New file.
* gnu/packages/patches/python-pytorch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/machine-learning.scm             |  61 +--
 ...thon-pytorch-for-r-torch-fix-codegen.patch | 167 ++++++++
 ...pytorch-for-r-torch-system-libraries.patch | 399 ++++++++++++++++++
 .../python-pytorch2-system-libraries.patch    | 156 -------
 5 files changed, 585 insertions(+), 199 deletions(-)
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c0b9b3a150..19d71d1b41 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1812,7 +1812,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyreadstat-link-libiconv.patch	\
   %D%/packages/patches/python-pyls-black-41.patch		\
   %D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch	\
-  %D%/packages/patches/python-pytorch2-system-libraries.patch	\
   %D%/packages/patches/python-sip-include-dirs.patch	\
   %D%/packages/patches/python-sgmllib3k-assertions.patch	\
   %D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 4a8aa13d50..213260d0b5 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4707,7 +4707,15 @@ (define %python-pytorch-for-r-torch-src
                               %python-pytorch-for-r-torch-version))
     (sha256
      (base32
-      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))
+    (patches (search-patches
+              "python-pytorch-for-r-torch-system-libraries.patch"
+              "python-pytorch-runpath.patch"
+              "python-pytorch-without-kineto.patch"
+              ;; Some autogeneration scripts depend on the
+              ;; compile PyTorch library. Therefore, we create
+              ;; dummy versions which are regenerated later.
+              "python-pytorch-for-r-torch-fix-codegen.patch"))))
 
 (define-public qnnpack-pytorch-for-r-torch
   (package
@@ -4723,59 +4731,28 @@ (define-public qnnpack-pytorch-for-r-torch
        (snippet
         (origin-snippet (package-source qnnpack-pytorch)))))))
 
+;; Keep in sync with r-torch
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
     (name "python-pytorch")
-    (version "2.0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14m7v54zyd2qg2xk9mqdpbf4ps7091mdzinzh4vq9p5k4bpznj65"))
-              (patches (search-patches "python-pytorch2-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "caffe2/CMakeLists.txt"
-                    (("target_link_libraries\\(\\$\\{test_name\\}_\\$\\{CPU_CAPABILITY\\} c10 sleef gtest_main\\)")
-                     "target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest gtest_main)"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-for-r-torch-version)
+    (source %python-pytorch-for-r-torch-src)
+    (native-inputs
+     (modify-inputs (package-native-inputs python-pytorch)
+       (replace "ideep-pytorch" ideep-pytorch-for-r-torch)))
     (inputs
      (modify-inputs (package-inputs python-pytorch)
-       (replace "xnnpack" xnnpack-for-torch2)))
+       (replace "qnnpack-pytorch" qnnpack-pytorch-for-r-torch)
+       (replace "oneapi-dnnl" oneapi-dnnl-for-r-torch)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
                python-jinja2
                python-networkx
                python-opt-einsum
-               python-sympy)
-       (replace "onnx" onnx-for-torch2)
-       (replace "onnx-optimizer" onnx-optimizer-for-torch2)))))
+               python-sympy)))
+    (supported-systems %64bit-supported-systems)))
 
 (define-public python-pytorch-geometric
   (package
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
new file mode 100644
index 0000000000..8515e5ab13
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index 120520b139..0c8587f02d 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -16,9 +16,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -48,7 +53,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index e5287cffc5..57f3c38096 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = {name: lst for name, lst in sorted_version_map_}
+ 
+@@ -379,7 +384,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ def main() -> None:
+ 
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
new file mode 100644
index 0000000000..e5d647f70d
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
@@ -0,0 +1,399 @@
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
+
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 96fc297..7f27b66 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -362,9 +362,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
+ 
+diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
+index 221e3f3..417f601 100644
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -110,9 +110,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -975,7 +972,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1314,6 +1310,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ target_include_directories(torch_cpu INTERFACE $<INSTALL_INTERFACE:include>)
+ target_include_directories(torch_cpu PRIVATE ${Caffe2_CPU_INCLUDE})
+ target_include_directories(torch_cpu SYSTEM PRIVATE "${Caffe2_DEPENDENCY_INCLUDE}")
+@@ -1570,7 +1567,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1601,7 +1598,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1622,13 +1619,13 @@ if(BUILD_TEST)
+         if(NOT MSVC)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
+           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
+           if(USE_FBGEMM)
+             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1645,7 +1642,7 @@ if(BUILD_TEST)
+   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1703,7 +1700,7 @@ if(BUILD_TEST)
+     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
+       get_filename_component(test_name ${test_src} NAME_WE)
+       add_executable(${test_name} "${test_src}")
+-      target_link_libraries(${test_name} torch_library gtest_main)
++      target_link_libraries(${test_name} torch_library gtest_main gtest)
+       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 8c0e3c2..d65576a 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -298,7 +298,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -501,19 +501,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -562,13 +549,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -750,11 +730,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+   # this shouldn't be necessary anymore.
+   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
+-  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
+-
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
+ 
+   # We will not need to test benchmark lib itself.
+   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
+@@ -829,16 +804,6 @@ if(USE_FBGEMM)
+     else()
+       set(FBGEMM_LIBRARY_TYPE "static" CACHE STRING "")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -1001,7 +966,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1395,7 +1360,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1551,7 +1515,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1582,7 +1545,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+     endif()
+     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
+     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
+-    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
++    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
+   endif()
+   include_directories(${FOXI_INCLUDE_DIRS})
+   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1752,9 +1715,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1819,7 +1781,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1828,7 +1790,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
+diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
+index a41343c..6075bdd 100644
+--- a/cmake/External/nnpack.cmake
++++ b/cmake/External/nnpack.cmake
+@@ -40,7 +40,7 @@ endif()
+ # (3) Android, iOS, Linux, macOS - supported
+ ##############################################################################
+ 
+-if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
++if(FALSE)
+   message(STATUS "Brace yourself, we are building NNPACK")
+   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
+ 
+@@ -114,6 +114,5 @@ endif()
+ # (4) Catch-all: not supported.
+ ##############################################################################
+ 
+-message(WARNING "Unknown platform - I don't know how to build NNPACK. "
+-                "See cmake/External/nnpack.cmake for details.")
+-set(USE_NNPACK OFF)
++set(NNPACK_FOUND TRUE)
++set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 50404d3..ca067f0 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,7 +15,7 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+ if(BUILD_ONEDNN_GRAPH)
+   if(NOT TARGET caffe2::dnnl_graph)
+     add_library(caffe2::dnnl_graph INTERFACE IMPORTED)
+diff --git a/setup.py b/setup.py
+index 34b2854..5db117f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -418,13 +418,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         'tools/shared/_utils_internal.py',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h',
+     ]
+     orig_files = [
+         'torch/_utils_internal.py',
+-        'third_party/valgrind-headers/callgrind.h',
+-        'third_party/valgrind-headers/valgrind.h',
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
+diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
+index 89c6b91..0c60d08 100644
+--- a/test/cpp/c10d/CMakeLists.txt
++++ b/test/cpp/c10d/CMakeLists.txt
+@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
+   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ endfunction()
+ 
+-c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
+-c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
++c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
++c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
+ if(INSTALL_TEST)
+   install(TARGETS FileStoreTest DESTINATION bin)
+   install(TARGETS TCPStoreTest DESTINATION bin)
+ endif()
+ if(NOT WIN32)
+-  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
++  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
+   if(INSTALL_TEST)
+     install(TARGETS HashStoreTest DESTINATION bin)
+   endif()
+@@ -31,11 +31,11 @@ endif()
+ 
+ if(USE_CUDA)
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
+     endif()
+-    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+   endif()
+   if(USE_NCCL AND USE_C10D_NCCL)
+     # NCCL is a private dependency of libtorch, but the tests include some
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
+   endif()
+ else()
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
+   endif()
+ endif()
+ 
+diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
+index 7dff706..90b1003 100644
+--- a/test/cpp/tensorexpr/CMakeLists.txt
++++ b/test/cpp/tensorexpr/CMakeLists.txt
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+ # pthreadpool header. For some build environment we need add the dependency
+ # explicitly.
+ if(USE_PTHREADPOOL)
+-  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
++  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
+ endif()
+ if(USE_CUDA)
+   target_link_libraries(test_tensorexpr PRIVATE
diff --git a/gnu/packages/patches/python-pytorch2-system-libraries.patch b/gnu/packages/patches/python-pytorch2-system-libraries.patch
deleted file mode 100644
index c2c44badbb..0000000000
--- a/gnu/packages/patches/python-pytorch2-system-libraries.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
---- a/caffe2/CMakeLists.txt	2023-12-27 12:14:24.308751288 +0100
-+++ b/caffe2/CMakeLists.txt	2023-12-27 12:30:15.941562126 +0100
-@@ -1570,7 +1570,7 @@
-   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
-   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
-   target_link_libraries(static_runtime_bench torch_library benchmark)
--  target_link_libraries(static_runtime_test torch_library gtest_main)
-+  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
- endif()
- 
- if(BUILD_TENSOREXPR_BENCHMARK)
-@@ -1601,7 +1601,7 @@
-   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
-@@ -1628,7 +1628,7 @@
-           endif()
-         else()
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
-         endif()
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-@@ -1645,7 +1645,7 @@
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1666,7 +1666,7 @@
-     foreach(test_src ${Caffe2_MPS_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
-diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
---- a/test/cpp/c10d/CMakeLists.txt
-+++ b/test/cpp/c10d/CMakeLists.txt
-@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
--c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
-+c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
- if(INSTALL_TEST)
-   install(TARGETS FileStoreTest DESTINATION bin)
-   install(TARGETS TCPStoreTest DESTINATION bin)
- endif()
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
-+  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
-   if(INSTALL_TEST)
-     install(TARGETS HashStoreTest DESTINATION bin)
-   endif()
-@@ -31,11 +31,11 @@ endif()
- 
- if(USE_CUDA)
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-     if(INSTALL_TEST)
-       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
-     endif()
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_NCCL AND USE_C10D_NCCL)
-     # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
-   endif()
- else()
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
-   endif()
- endif()
- 
-diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
---- a/test/cpp/tensorexpr/CMakeLists.txt
-+++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
- # pthreadpool header. For some build environment we need add the dependency
- # explicitly.
- if(USE_PTHREADPOOL)
--  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
-+  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
- endif()
- if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch
  2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
                     ` (30 preceding siblings ...)
  2024-03-12 22:51   ` [bug#69591] [PATCH v2 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
@ 2024-03-20 22:37   ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
                       ` (32 more replies)
  31 siblings, 33 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:37 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

In the QA, several builds failed, mostly because some libraries are not
supported on all architectures, so I added the supported-systems fields
and only include oneapi-dnnl, qnnpack, qnnpack-pytorch, xnnpack, nnpack
and cpuinfo for supported systems as input for python-pytorch.
For x86_64, nnpack requires AVX2 or AVX-512 instructions and fbgemm is
only available for x86_64 with AVX2 or AVX-512 instructions.
Therefore, I removed them from the inputs for x86_64 (fbgemm for all)
and only include them in the python-pytorch-avx package variant.

asmjit fails to build on armhf because GCC runs out of memory. What
should be done here? It's only used by blacksmith, fbgemm and
python-pytorch*.

cpuinfo has a bug on aarch64, which was reported upstream:
https://github.com/pytorch/cpuinfo/issues/14
I therefore excluded aarch64-linux from supported-systems.

Due to these problems, the python-pytorch package only builds on
x86_64-linux, but it doesn't seem to have been different before.

David Elsing (32):
  gnu: asmjit: Update to commit 3ca5c18.
  gnu: Add python-typing-extensions-4.10.
  gnu: Add python-optree.
  gnu: Add python-pytest-flakefinder.
  gnu: Add python-pytest-shard.
  gnu: Add python-expecttest.
  gnu: Add python-pytest-rerunfailures-13.
  gnu: Add miniz.
  gnu: Add miniz-for-pytorch.
  gnu: Add libnop.
  gnu: Remove flatbuffers-next-shared.
  gnu: python-flatbuffers-next: Update to 23.5.26.
  gnu: pthreadpool: Update to commit 178e3e0.
  gnu: cpuinfo: Update to commit aa4b216.
  gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  gnu: nnpack: Update to commit 70a77f4.
  gnu: oneapi-dnnl: Update to 3.3.5.
  gnu: Add tensorpipe.
  gnu: Add fbgemm.
  gnu: Add qnnpack.
  gnu: Add foxi.
  gnu: Add ideep-pytorch.
  gnu: xnnpack: Update to commit 51a9875.
  gnu: Remove xnnpack-for-torch2.
  gnu: Add qnnpack-pytorch.
  gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  gnu: Add python-pytorch-avx.
  gnu: python-torchvision: Update to 0.17.1.
  gnu: Add ideep-pytorch-for-r-torch.
  gnu: Add oneapi-dnnl-for-r-torch.
  gnu: Add qnnpack-pytorch-for-r-torch.
  gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.

 gnu/local.mk                                  |   10 +-
 gnu/packages/compression.scm                  |   50 +
 gnu/packages/cpp.scm                          |    6 +-
 gnu/packages/machine-learning.scm             |  964 +++-
 gnu/packages/parallel.scm                     |   34 +-
 .../patches/clog-fix-shared-build.patch       |   39 +-
 .../patches/cpuinfo-system-libraries.patch    |   50 -
 .../patches/fbgemm-use-system-libraries.patch |   62 +
 gnu/packages/patches/foxi-fix-build.patch     |   55 +
 gnu/packages/patches/miniz-for-pytorch.patch  |   47 +
 .../patches/python-optree-fix-32-bit.patch    |  122 +
 ...ython-pytorch-1.9.0-system-libraries.patch |  139 -
 .../patches/python-pytorch-fix-codegen.patch  |  167 +
 ...thon-pytorch-for-r-torch-fix-codegen.patch |  167 +
 ...pytorch-for-r-torch-system-libraries.patch |  399 ++
 .../patches/python-pytorch-runpath.patch      |   19 +-
 .../python-pytorch-system-libraries.patch     |  317 +-
 .../python-pytorch-without-kineto.patch       |   60 +
 .../python-pytorch2-system-libraries.patch    |  156 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------
 .../patches/xnnpack-remove-broken-tests.patch |  337 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 gnu/packages/python-build.scm                 |   14 +-
 gnu/packages/python-check.scm                 |   89 +
 gnu/packages/python-xyz.scm                   |   30 +
 gnu/packages/serialization.scm                |   54 +-
 26 files changed, 5209 insertions(+), 4971 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

-- 
2.41.0





^ permalink raw reply	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 01/32] gnu: asmjit: Update to commit 3ca5c18.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
                       ` (31 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/cpp.scm (asmjit): Update to commit 3ca5c18.
---
 gnu/packages/cpp.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index d451eea2fd..78c3a195a6 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -154,8 +154,8 @@ (define-public argagg
       (license license:expat))))
 
 (define-public asmjit
-  (let ((commit "4ec760a3d1f69e32ba460ecd2513f29b8428700b")
-        (revision "0"))
+  (let ((commit "3ca5c186bf8922e5fe3018432e93651fd2fa4053")
+        (revision "1"))
     (package
       (name "asmjit")
       (version (git-version "0.0.0" revision commit))
@@ -168,7 +168,7 @@ (define-public asmjit
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0skgccbpamcbg1byawfq5n6jzxgj64hnc7jznvk35nkskaaz1nlb"))))
+          (base32 "10k1zc0w8m0vnh52id9qlm1sb99qmpvr6k0ha8ag2h223n0d591g"))))
       (build-system cmake-build-system)
       (arguments
        (list #:configure-flags #~(list "-DASMJIT_TEST=TRUE")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 02/32] gnu: Add python-typing-extensions-4.10.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 03/32] gnu: Add python-optree David Elsing
                       ` (30 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-build.scm (python-typing-extensions-4.10): New variable.
---
 gnu/packages/python-build.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 2ea457cdba..dfd59d5e25 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org>
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
-
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -252,6 +252,18 @@ (define-public python-typing-extensions
 @end enumerate\n")
     (license license:psfl)))
 
+(define-public python-typing-extensions-4.10
+  (package
+    (inherit python-typing-extensions)
+    (version "4.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "typing_extensions" version))
+       (sha256
+        (base32
+         "1jxkj4pni8pdyrn79sq441lsp40xzw363n0qvfc6zfcgkv4dgaxh"))))))
+
 \f
 ;;;
 ;;; Python builder packages.
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 03/32] gnu: Add python-optree.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 04/32] gnu: Add python-pytest-flakefinder David Elsing
                       ` (29 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-xyz.scm (python-optree): New variable.
---
 .../patches/python-optree-fix-32-bit.patch    | 122 ++++++++++++++++++
 gnu/packages/python-xyz.scm                   |  30 +++++
 2 files changed, 152 insertions(+)
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch

diff --git a/gnu/packages/patches/python-optree-fix-32-bit.patch b/gnu/packages/patches/python-optree-fix-32-bit.patch
new file mode 100644
index 0000000000..6a32c39bd8
--- /dev/null
+++ b/gnu/packages/patches/python-optree-fix-32-bit.patch
@@ -0,0 +1,122 @@
+In include/utils.h, ssize_t is an alias for py::ssize_t, which is an alias for
+Py_ssize_t in Python, which is an alias for the system ssize_t.
+The latter is defined in glibc as int if __WORDSIZE == 32 and as long int if
+__WORDSIZE == 64.  Therefore, we need to remove the explicit template
+specialization for int in the first case.
+
+diff --git a/include/utils.h b/include/utils.h
+index 950a02b..82a9591 100644
+--- a/include/utils.h
++++ b/include/utils.h
+@@ -141,10 +141,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const size_t& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const int& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const ssize_t& item) {
+     return PyList_GET_ITEM(container.ptr(), item);
+@@ -153,10 +155,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const size_t& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const int& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_BORROW(const py::handle& container, const Item& item) {
+@@ -171,11 +175,13 @@ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_borrow<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -185,11 +191,13 @@ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const s
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_STEAL(const py::handle& container, const Item& item) {
+@@ -204,11 +212,13 @@ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const s
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_steal<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -218,11 +228,13 @@ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const si
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline void SET_ITEM(const py::handle& container, const Item& item, const py::handle& value) {
+@@ -240,12 +252,14 @@ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const int& item,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const ssize_t& item,
+@@ -258,12 +272,14 @@ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const int& item,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ 
+ template <typename PyType>
+ inline void AssertExact(const py::handle& object) {
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 0ac9d669d3..bac7d79af9 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -150,6 +150,7 @@
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Ian Eure <ian@retrospec.tv>
 ;;; Copyright © 2024 Adriel Dumas--Jondeau <leirda@disroot.org>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -11741,6 +11742,35 @@ (define-public python-treelib
      "This package provides a Python implementation of a tree structure.")
     (license license:asl2.0)))
 
+(define-public python-optree
+  (package
+    (name "python-optree")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/metaopt/optree")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1q3wljk7cyl5rsam02sfsj8zjrqx4c3x9vic8j6xx13p8czpsisg"))
+       (patches (search-patches "python-optree-fix-32-bit.patch"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-typing-extensions))
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-xdist
+           cmake
+           pybind11))
+    (home-page "https://github.com/metaopt/optree")
+    (synopsis "Optimized PyTree Utilities")
+    (description "This package contains operations on PyTrees (a tree made of
+container data structures in Python).")
+    (license license:asl2.0)))
+
 (define-public python-jupyter-core
   (package
     (name "python-jupyter-core")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 04/32] gnu: Add python-pytest-flakefinder.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (2 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 03/32] gnu: Add python-optree David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 05/32] gnu: Add python-pytest-shard David Elsing
                       ` (28 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-flakefinder): New variable.
---
 gnu/packages/python-check.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 51a38bbcbe..247f8af98b 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,6 +192,24 @@ (define-public python-pytest-csv
 it adds to the Pytest command line interface (CLI).")
     (license license:gpl3+)))
 
+(define-public python-pytest-flakefinder
+  (package
+    (name "python-pytest-flakefinder")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flakefinder" version))
+       (sha256
+        (base32 "03iy80xlkpgzjs2kxa9rrj8dbnp9awyhpcl3hy8fgf5x40cjlhg2"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-pytest))
+    (home-page "https://github.com/dropbox/pytest-flakefinder")
+    (synopsis "Pytest plugin for finding flaky tests")
+    (description "This package provides a Pytest plugin to run tests multiple
+times and detect flakyness.")
+    (license license:asl2.0)))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 05/32] gnu: Add python-pytest-shard.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (3 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 04/32] gnu: Add python-pytest-flakefinder David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 06/32] gnu: Add python-expecttest David Elsing
                       ` (27 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-shard): New variable.
---
 gnu/packages/python-check.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 247f8af98b..f876088488 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -210,6 +210,30 @@ (define-public python-pytest-flakefinder
 times and detect flakyness.")
     (license license:asl2.0)))
 
+(define-public python-pytest-shard
+  (let ((commit "64610a08dac6b0511b6d51cf895d0e1040d162ad")
+        (revision "0"))
+    (package
+      (name "python-pytest-shard")
+      (version (git-version "0.1.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AdamGleave/pytest-shard")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1h31m68igz670bzl307hazjrfbr8pk14mxflllar18ydmlrnl677"))))
+      (build-system pyproject-build-system)
+      (propagated-inputs (list python-pytest))
+      (home-page "https://github.com/AdamGleave/pytest-shard")
+      (synopsis "Pytest plugin for sharding tests")
+      (description "This package provides a Pytest extension for sharding
+tests at the granularity of individual test cases, which can be run in
+parallel and on multiple machines.")
+      (license license:expat))))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 06/32] gnu: Add python-expecttest.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (4 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 05/32] gnu: Add python-pytest-shard David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
                       ` (26 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-expecttest): New variable.
---
 gnu/packages/python-check.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index f876088488..dbca80652c 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2078,6 +2078,41 @@ (define-public python-eradicate
 valid Python syntax that are likely to be commented out code.")
     (license license:expat)))
 
+(define-public python-expecttest
+  (let ((commit "683b09a352cc426851adc2e3a9f46e0ab25e4dee")
+        (revision "0"))
+    (package
+      (name "python-expecttest")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ezyang/expecttest")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1djwxp9x1hczzxbimv1b1bmd083am88v27l82nmlkhvzyg2cmpvv"))))
+      (build-system pyproject-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; The test runs tests expected to fail, so the output is
+                  ;; confusing
+                  (invoke "python3" "test_expecttest.py")))))))
+      (native-inputs (list python-hypothesis poetry))
+      (home-page "https://github.com/ezyang/expecttest")
+      (synopsis "Python module for expect tests")
+      (description "@code{expecttest} is a Python module for expect tests, where
+the initial expected value of a test can be automatically set by running the
+test itself.")
+      (license license:expat))))
+
 (define-public python-robber
   (package
     (name "python-robber")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 07/32] gnu: Add python-pytest-rerunfailures-13.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (5 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 06/32] gnu: Add python-expecttest David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 08/32] gnu: Add miniz David Elsing
                       ` (25 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-rerunfailures-13): New variable.
---
 gnu/packages/python-check.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index dbca80652c..347e4a4701 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2464,6 +2464,17 @@ (define-public python-pytest-rerunfailures
 eliminate flaky failures.")
     (license license:mpl2.0)))
 
+(define-public python-pytest-rerunfailures-13
+  (package
+    (inherit python-pytest-rerunfailures)
+    (version "13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-rerunfailures" version))
+       (sha256
+        (base32 "16cin0chv59w4rvnd6r0fisp0s8avmp07rwn9da6yixw43jdncp1"))))))
+
 (define-public python-xunitparser
   (package
     (name "python-xunitparser")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 08/32] gnu: Add miniz.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (6 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 09/32] gnu: Add miniz-for-pytorch David Elsing
                       ` (24 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz): New variable.
---
 gnu/packages/compression.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 5de17b6b51..fcfc2c30f3 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2838,3 +2839,31 @@ (define-public unrar-free
 libarchive.  It does not rival the non-free @code{unrar} in terms of features,
 but special care has been taken to ensure it meets most user's needs.")
     (license license:gpl2+)))
+
+(define-public miniz
+  (package
+    (name "miniz")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0672q35vjrpakmsr1gwj9k5fwv5ihzhahm19bq4y74wqpn91p7fw"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON")
+      ;; No tests
+      #:tests? #f))
+    (home-page "https://github.com/richgel999/miniz")
+    (synopsis "Independent implementation of zlib and Deflate compression")
+    (description "Miniz is a lossless data compression library that implements
+the zlib (RFC 1950) and Deflate (RFC 1951) compressed data format
+specification standards.  It supports the most commonly used functions
+exported by the zlib library.")
+    (license license:expat)))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 09/32] gnu: Add miniz-for-pytorch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (7 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 08/32] gnu: Add miniz David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 10/32] gnu: Add libnop David Elsing
                       ` (23 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz-for-pytorch): New variable.
* gnu/packages/patches/miniz-for-pytorch.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                 |  1 +
 gnu/packages/compression.scm                 | 21 +++++++++
 gnu/packages/patches/miniz-for-pytorch.patch | 47 ++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7f1006010b..ca83a84ea2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1691,6 +1691,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/miniz-for-pytorch.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index fcfc2c30f3..589c9bb834 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2867,3 +2867,24 @@ (define-public miniz
 specification standards.  It supports the most commonly used functions
 exported by the zlib library.")
     (license license:expat)))
+
+(define-public miniz-for-pytorch
+  (package
+    (inherit miniz)
+    (version "pytorch-2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit "2.2.0")))
+              (file-name (git-file-name (package-name miniz) version))
+              (sha256
+               (base32
+                "09j9ihigfsavgcmk8l36zmbjvdf1x1w7h2v4rkww1qk1sb43y5zf"))
+              (patches (search-patches "miniz-for-pytorch.patch"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments miniz)
+       ((#:configure-flags flags '())
+        ;; The changes break the examples.
+        `(cons "-DBUILD_EXAMPLES=OFF" ,flags))))
+    (properties '((hidden? . #t)))))
diff --git a/gnu/packages/patches/miniz-for-pytorch.patch b/gnu/packages/patches/miniz-for-pytorch.patch
new file mode 100644
index 0000000000..19fa705a31
--- /dev/null
+++ b/gnu/packages/patches/miniz-for-pytorch.patch
@@ -0,0 +1,47 @@
+Modifications from the internal fork of the python-pytorch package.
+
+diff --git a/miniz.h b/miniz.h
+index 42e1ea2..5869ab9 100644
+--- a/miniz.h
++++ b/miniz.h
+@@ -123,7 +123,7 @@
+ /* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */
+ /* get/set file times, and the C run-time funcs that get/set times won't be called. */
+ /* The current downside is the times written to your archives will be from 1979. */
+-/*#define MINIZ_NO_TIME */
++#define MINIZ_NO_TIME
+ 
+ /* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
+ /*#define MINIZ_NO_ARCHIVE_APIS */
+@@ -135,7 +135,7 @@
+ /*#define MINIZ_NO_ZLIB_APIS */
+ 
+ /* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */
+-/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
++#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+ 
+ /* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. 
+    Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc
+@@ -172,8 +172,7 @@
+ #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
+ #if MINIZ_X86_OR_X64_CPU
+ /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
+-#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
+-#define MINIZ_UNALIGNED_USE_MEMCPY
++#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #else
+ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #endif
+diff --git a/miniz_zip.h b/miniz_zip.h
+index 82502bd..3d92255 100644
+--- a/miniz_zip.h
++++ b/miniz_zip.h
+@@ -150,7 +150,7 @@ typedef enum {
+     MZ_ZIP_TOTAL_ERRORS
+ } mz_zip_error;
+ 
+-typedef struct
++typedef struct mz_zip_archive
+ {
+     mz_uint64 m_archive_size;
+     mz_uint64 m_central_directory_file_ofs;
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 10/32] gnu: Add libnop.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (8 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 09/32] gnu: Add miniz-for-pytorch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 11/32] gnu: Remove flatbuffers-next-shared David Elsing
                       ` (22 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (libnop): New variable.
---
 gnu/packages/serialization.scm | 39 ++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 331fae80cf..bfee0dbfc6 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2024 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -936,3 +937,41 @@ (define-public python-feather-format
     (description "This package provides a Python wrapper library to the
 Apache Arrow-based Feather binary columnar serialization data frame format.")
     (license license:asl2.0)))
+
+(define-public libnop
+  (let ((commit "35e800d81f28c632956c5a592e3cbe8085ecd430")
+        (revision "0"))
+    (package
+      (name "libnop")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/libnop")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0qqbaljq54qiq0dky9nj47igfcs065ry526jg9a0aafbfl9krpy2"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:test-target "test"
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "out/test"))))
+            (replace 'install
+              (lambda _
+                (copy-recursively
+                 "include" (string-append #$output "/include")))))))
+      (native-inputs (list googletest))
+      (home-page "https://github.com/google/libnop")
+      (synopsis "C++ Native Object Protocols")
+      (description "@code{libnop} is a header-only library for serializing and
+deserializing C++ data types without external code generators or runtime
+support libraries.")
+      (license license:asl2.0))))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 11/32] gnu: Remove flatbuffers-next-shared.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (9 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 10/32] gnu: Add libnop David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
                       ` (21 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (flatbuffers-next-shared): Delete variable.
* gnu/packages/machine-learning.scm (tensorflow-lite)[arguments]: Use
flatbuffers-next instead of flatbuffers-next-shared.
---
 gnu/packages/machine-learning.scm |  5 +++--
 gnu/packages/serialization.scm    | 11 -----------
 2 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5c18a2e9d5..6da189616d 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2024 David Pflug <david@pflug.io>
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Spencer King <spencer.king@geneoscopy.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3337,7 +3338,7 @@ (define-public tensorflow-lite
          (string-append "-DEigen3_DIR=" #$(this-package-input "eigen")
                         "/share/eigen3/cmake")
          (string-append "-DFlatBuffers_DIR="
-                        #$(this-package-input "flatbuffers-shared")
+                        #$(this-package-input "flatbuffers")
                         "/lib/cmake/flatbuffers")
          (string-append "-DNEON_2_SSE_DIR=" #$(this-package-input "neon2sse")
                         "/lib/cmake/NEON_2_SSE")
@@ -3424,7 +3425,7 @@ (define-public tensorflow-lite
        ("cpuinfo" ,cpuinfo)
        ("eigen" ,eigen)
        ("fp16" ,fp16)
-       ("flatbuffers-shared" ,flatbuffers-next-shared)
+       ("flatbuffers" ,flatbuffers-next)
        ("gemmlowp" ,gemmlowp)
        ("mesa-headers" ,mesa-headers)
        ("neon2sse" ,neon2sse)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index bfee0dbfc6..405c4211da 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -890,17 +890,6 @@ (define-public flatbuffers-next
                (base32
                 "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
 
-(define-public flatbuffers-next-shared
-  (package
-    (inherit flatbuffers-next)
-    (name "flatbuffers-shared")
-    (version "23.1.21")
-    (arguments
-     (substitute-keyword-arguments (package-arguments flatbuffers-next)
-       ((#:configure-flags  flags)
-        ;; Compile with -fPIC, needed for shared lib.
-        #~(cons "-DFLATBUFFERS_CXX_FLAGS=-fPIC" #$flags))))))
-
 (define-public python-flatbuffers
   (package
     (name "python-flatbuffers")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 12/32] gnu: python-flatbuffers-next: Update to 23.5.26.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (10 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 11/32] gnu: Remove flatbuffers-next-shared David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
                       ` (20 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (python-flatbuffers-next): Update to 23.5.26.
---
 gnu/packages/serialization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 405c4211da..bea96f2a92 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -879,7 +879,7 @@ (define-public flatbuffers
 (define-public flatbuffers-next
   (package
     (inherit flatbuffers)
-    (version "23.1.21")
+    (version "23.5.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -888,7 +888,7 @@ (define-public flatbuffers-next
               (file-name (git-file-name "flatbuffers" version))
               (sha256
                (base32
-                "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
+                "0cd12dvkzqdafz46q4302mzgpzbz589zmmiga7bq07f2sqy4vrvv"))))))
 
 (define-public python-flatbuffers
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 13/32] gnu: pthreadpool: Update to commit 178e3e0.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (11 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
                       ` (19 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (pthreadpool): Update to commit 178e3e0.
---
 gnu/packages/parallel.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index ddf4ad016b..e1cbe52934 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -449,9 +450,9 @@ (define-public python-slurm-magic
 (define-public pthreadpool
   ;; This repository has only one tag, 0.1, which is older than what users
   ;; such as XNNPACK expect.
-  (let ((commit "1787867f6183f056420e532eec640cba25efafea")
+  (let ((commit "178e3e0646cc671708bf78e77c273940130ac637")
         (version "0.1")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "pthreadpool")
       (version (git-version version revision commit))
@@ -462,7 +463,7 @@ (define-public pthreadpool
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02hdvxfn5krw8zivkgjx3b4rk9p02yr4mpdjlp75lsv6z1xf5yrx"))
+                  "1s86lnq9bahacf5wxn7y14w70jh3g9lq1l7y16ijwhifd01nc2km"))
                 (patches (search-patches "pthreadpool-system-libraries.patch"))))
       (build-system cmake-build-system)
       (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 14/32] gnu: cpuinfo: Update to commit aa4b216.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (12 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
                       ` (18 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (cpuinfo): Update to commit aa4b216.
[arguments]: Set the "-DUSE_SYSTEM_LIBS=ON" configure flag instead of using a
patch.
[supported-systems]: New field.
* gnu/packages/patches/cpuinfo-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/parallel.scm                     | 14 ++++--
 .../patches/cpuinfo-system-libraries.patch    | 50 -------------------
 3 files changed, 9 insertions(+), 56 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index ca83a84ea2..474260b764 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1068,7 +1068,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/cppcheck-disable-char-signedness-test.patch	\
-  %D%/packages/patches/cpuinfo-system-libraries.patch		\
   %D%/packages/patches/cpulimit-with-glib-2.32.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crc32c-unbundle-googletest.patch		\
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index e1cbe52934..4238312367 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -480,8 +480,8 @@ (define-public pthreadpool
 (define-public cpuinfo
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (revision "2")
-        (commit "53298db833c5c5a1598639e9b47cc1a602bbac26"))
+        (revision "3")
+        (commit "aa4b2163b99ac9534194520f70b93eeefb0b3b4e"))
     (package
       (name "cpuinfo")
       (version (git-version version revision commit))
@@ -492,12 +492,13 @@ (define-public cpuinfo
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "01kfgxya2w32dz9bd3qm3i2d6nffw0qfyql11rxl7d3g830brj5k"))
-                (patches (search-patches "cpuinfo-system-libraries.patch"))))
+                  "12x4krkyzxngf1l2ck33lnsp8pyzf6gyjj9mp9cnka9mw3h6617m"))))
       (build-system cmake-build-system)
       (arguments
        (list
-        #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON")
+        #:configure-flags
+        '(list "-DBUILD_SHARED_LIBS=ON"
+               "-DUSE_SYSTEM_LIBS=ON")
         #:phases
         '(modify-phases %standard-phases
            (add-after 'unpack 'skip-bad-test
@@ -513,6 +514,9 @@ (define-public cpuinfo
        "The cpuinfo library provides a C/C++ and a command-line interface to
 obtain information about the CPU being used: supported instruction set,
 processor name, cache information, and topology information.")
+      ;; On aarch64-linux, there is a bug reported upstream:
+      ;; https://github.com/pytorch/cpuinfo/issues/14
+      (supported-systems '("armv7-linux" "i686-linux" "x86_64-linux"))
       (license license:bsd-2))))
 
 (define-public clog
diff --git a/gnu/packages/patches/cpuinfo-system-libraries.patch b/gnu/packages/patches/cpuinfo-system-libraries.patch
deleted file mode 100644
index e25446e9da..0000000000
--- a/gnu/packages/patches/cpuinfo-system-libraries.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57abc26..761c612 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -93,7 +93,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
- 
- IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -105,7 +105,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
- ENDIF()
- 
- IF(CPUINFO_BUILD_BENCHMARKS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -271,14 +271,6 @@ INSTALL(TARGETS cpuinfo
- 
- # ---[ cpuinfo micro-benchmarks
- IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
--  # ---[ Build google benchmark
--  IF(NOT TARGET benchmark)
--    SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "")
--    ADD_SUBDIRECTORY(
--      "${GOOGLEBENCHMARK_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark")
--  ENDIF()
--
-   IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$")
-     ADD_EXECUTABLE(get-current-bench bench/get-current.cc)
-     TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark)
-@@ -289,7 +281,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
- ENDIF()
- 
- IF(CPUINFO_SUPPORTED_PLATFORM)
--  IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
-+  IF(FALSE)
-     # ---[ Build google test
-     IF(NOT TARGET gtest)
-       IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (13 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
                       ` (17 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (clog)[arguments]: Add "-DUSE_SYSTEM_LIBS=ON"
to #:configure-flags.
* gnu/packages/patches/clog-fix-shared-build.patch: Adjust patch.
---
 gnu/packages/parallel.scm                     | 13 ++++---
 .../patches/clog-fix-shared-build.patch       | 39 ++-----------------
 2 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 4238312367..f591834047 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -527,11 +527,14 @@ (define-public clog
               (inherit (package-source cpuinfo))
               (patches (search-patches "clog-fix-shared-build.patch"))))
     (arguments
-     (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'chdir
-                          (lambda _
-                            (chdir "deps/clog"))))))
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON"
+         "-DUSE_SYSTEM_LIBS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'chdir
+                     (lambda _
+                       (chdir "deps/clog"))))))
     (native-inputs (list googletest))
     (inputs '())
     (synopsis "C-style logging library based on printf")
diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch
index bf80544b90..eb305339f5 100644
--- a/gnu/packages/patches/clog-fix-shared-build.patch
+++ b/gnu/packages/patches/clog-fix-shared-build.patch
@@ -1,50 +1,19 @@
 Author: Antero Mejr <antero@mailbox.org>
-Notes: Disabled function visibility hacks and googletest download. Enabled
-non-static builds.
+Notes: Disabled function visibility hacks. Enabled non-static builds.
 
 diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
-index 083f519..b7b225a 100644
+index 6e50c41..db02e95 100644
 --- a/deps/clog/CMakeLists.txt
 +++ b/deps/clog/CMakeLists.txt
-@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
- SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
+@@ -55,7 +55,7 @@ IF(CLOG_BUILD_TESTS)
+ ENDIF()
  
--IF(CLOG_BUILD_TESTS)
--  IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
--    MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
--    CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
--  ENDIF()
--ENDIF()
--
  # ---[ clog library
 -ADD_LIBRARY(clog STATIC src/clog.c)
 +ADD_LIBRARY(clog src/clog.c)
  SET_TARGET_PROPERTIES(clog PROPERTIES
    C_STANDARD 99
    C_EXTENSIONS NO)
-@@ -74,16 +62,6 @@ INSTALL(TARGETS clog
- 
- # ---[ clog tests
- IF(CLOG_BUILD_TESTS)
--  # ---[ Build google test
--  IF(NOT TARGET gtest)
--    IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
--      SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
--    ENDIF()
--    ADD_SUBDIRECTORY(
--      "${GOOGLETEST_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
--  ENDIF()
--
-   ADD_EXECUTABLE(clog-test test/clog.cc)
-   SET_TARGET_PROPERTIES(clog-test PROPERTIES
-     CXX_STANDARD 11
 diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h
 index 4143761..aa9000f 100644
 --- a/deps/clog/include/clog.h
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 16/32] gnu: nnpack: Update to commit 70a77f4.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (14 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
                       ` (16 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (nnpack): Update to commit 70a77f4.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 6da189616d..4b3ebff474 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3973,10 +3973,11 @@ (define-public python-umap-learn
 also for general non-linear dimension reduction.")
     (license license:bsd-3)))
 
+;; Requires AVX2 on x86_64-linux.
 (define-public nnpack
   (let ((version "0.0")
-        (commit "c07e3a0400713d546e0dea2d5466dd22ea389c73")
-        (revision "1"))
+        (commit "70a77f485e8b934224f3a79efd8edcd84cd377b8")
+        (revision "2"))
     (package
       (name "nnpack")
       (version (git-version version revision commit))
@@ -3987,19 +3988,11 @@ (define-public nnpack
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0s0kk3a35w3yzf0q447p72350sbsh4qhg6vm3y2djbj4xpg7jc8v"))
+                  "0c4pw926279s3rlx7mg4l4vhnfy6dh374n6w7zqhcn0bxpym1hv1"))
                 (patches (search-patches "nnpack-system-libraries.patch"))))
       (build-system cmake-build-system)
-      ;; XXX: The test suite runs but it's very expensive, and on x86_64 CPUs
-      ;; that lack the right ISA extensions, tests fail with:
-      ;;
-      ;; Expected equality of these values:
-      ;;   nnp_status_success
-      ;;     Which is: 0
-      ;;   status
-      ;;     Which is: 51
-      ;;
-      ;; where 51 is 'nnp_status_unsupported_hardware'.
+      ;; XXX: The test suite runs but it's very expensive. On x86_64-linux, it
+      ;; requires AVX2 instructions.
       (arguments '(#:tests? #f))
       (synopsis "Acceleration package for neural network computations")
       (description
@@ -4020,6 +4013,8 @@ (define-public nnpack
              googletest))
       (native-inputs
        (list python python-peachpy python-six))
+      ;; Supported for Linux.
+      (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
 (define-public xnnpack
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 17/32] gnu: oneapi-dnnl: Update to 3.3.5.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (15 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 18/32] gnu: Add tensorpipe David Elsing
                       ` (15 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl): Update to 3.3.5.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 4b3ebff474..5806de8891 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5369,7 +5369,7 @@ (define-public python-brian2tools
 (define-public oneapi-dnnl
   (package
     (name "oneapi-dnnl")
-    (version "3.1")
+    (version "3.3.5")
     (source
      (origin
        (method git-fetch)
@@ -5378,7 +5378,7 @@ (define-public oneapi-dnnl
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
+        (base32 "05ra5zziys2hvn29y6ysiqzsf4jr9bf2bci5sc3swvf3bs2y5ihf"))))
     (build-system cmake-build-system)
     (arguments (if (target-riscv64?)
                    (list #:configure-flags #~'("-DDNNL_CPU_RUNTIME=SEQ"))
@@ -5388,6 +5388,7 @@ (define-public oneapi-dnnl
     (description
      "OneAPI Deep Neural Network Library (oneDNN) is a cross-platform
 performance library of basic building blocks for deep learning applications.")
+    (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
 (define-public python-gguf
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 18/32] gnu: Add tensorpipe.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (16 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 19/32] gnu: Add fbgemm David Elsing
                       ` (14 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (tensorpipe): New variable.
---
 gnu/packages/machine-learning.scm | 36 +++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5806de8891..c39dccbe77 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -91,6 +91,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -4093,6 +4094,41 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public tensorpipe
+  (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
+        (revision "0"))
+    (package
+      (name "tensorpipe")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pytorch/tensorpipe")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0sbpkd69rzybw2j89sjkf4s0j8vkk96d51bsps28894989a75j6v"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(delete-file-recursively "third_party"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:configure-flags
+        ''("-DBUILD_SHARED_LIBS=ON")
+        ;; There are no tests
+        #:tests? #f))
+      (inputs (list libuv))
+      (native-inputs (list googletest pkg-config pybind11 libnop))
+      (home-page "https://github.com/pytorch/tensorpipe")
+      (synopsis "Tensor-aware point-to-point communication primitive for
+machine learning")
+      (description "TensorPipe provides a tensor-aware channel to transfer
+rich objects from one process to another while using the fastest transport for
+the tensors contained therein.")
+      (license license:bsd-3))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 19/32] gnu: Add fbgemm.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (17 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 18/32] gnu: Add tensorpipe David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 20/32] gnu: Add qnnpack David Elsing
                       ` (13 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (fbgemm): New variable.
* gnu/packages/patches/fbgemm-use-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/machine-learning.scm             | 34 ++++++++++
 .../patches/fbgemm-use-system-libraries.patch | 62 +++++++++++++++++++
 3 files changed, 97 insertions(+)
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 474260b764..e0fa9e1f78 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1175,6 +1175,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spUtils.patch			\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
+  %D%/packages/patches/fbgemm-use-system-libraries.patch	\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
   %D%/packages/patches/fbreader-fix-icon.patch		\
   %D%/packages/patches/fenics-dolfin-algorithm.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c39dccbe77..8a118337c1 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4094,6 +4094,40 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+;; Warning: This package requires AVX2 or AVX-512 instructions.
+(define-public fbgemm
+  (package
+    (name "fbgemm")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pytorch/fbgemm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mw30v55aicqdbh3xwfj9p8f38nw70ks5cxiwpgwjsk0dylah9rf"))
+              (patches (search-patches "fbgemm-use-system-libraries.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(delete-file-recursively "third_party"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DFBGEMM_LIBRARY_TYPE=shared")
+      ;; Tests require AVX2 or AVX-512 instructions
+      #:tests? #f))
+    (inputs (list asmjit cpuinfo))
+    (native-inputs (list pkg-config python googletest))
+    (home-page "https://github.com/pytorch/fbgemm")
+    (synopsis "Facebook GEneral Matrix Multiplication")
+    (description "Low-precision, high-performance matrix-matrix
+multiplications and convolution library for server-side inference.")
+    (supported-systems '("x86_64-linux"))
+    (license license:bsd-3)))
+
 (define-public tensorpipe
   (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
         (revision "0"))
diff --git a/gnu/packages/patches/fbgemm-use-system-libraries.patch b/gnu/packages/patches/fbgemm-use-system-libraries.patch
new file mode 100644
index 0000000000..456bc3021c
--- /dev/null
+++ b/gnu/packages/patches/fbgemm-use-system-libraries.patch
@@ -0,0 +1,62 @@
+Use the asmjit and cpuinfo packages.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 134523e..b88b0e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -235,7 +235,7 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(WARNING "==========")
+ 
+-if(NOT TARGET asmjit)
++if(FALSE)
+   #Download asmjit from github if ASMJIT_SRC_DIR is not specified.
+   if(NOT DEFINED ASMJIT_SRC_DIR)
+     set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/third_party/asmjit"
+@@ -264,7 +264,7 @@ if(NOT TARGET asmjit)
+   endif()
+ endif()
+ 
+-if(NOT TARGET cpuinfo)
++if(FALSE)
+   #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
+   if(NOT DEFINED CPUINFO_SOURCE_DIR)
+     set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/third_party/cpuinfo"
+@@ -340,9 +340,12 @@ target_include_directories(fbgemm BEFORE
+ target_link_libraries(fbgemm
+   $<BUILD_INTERFACE:asmjit>
+   $<BUILD_INTERFACE:cpuinfo>)
+-add_dependencies(fbgemm
+-  asmjit
+-  cpuinfo)
++
++find_package(asmjit)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(libcpuinfo REQUIRED IMPORTED_TARGET libcpuinfo)
++
++target_link_libraries(fbgemm asmjit::asmjit PkgConfig::libcpuinfo)
+ 
+ if(OpenMP_FOUND)
+   target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 2cffddf..bd4d409 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -14,7 +14,7 @@ set(CMAKE_C_STANDARD 11)
+ set(CMAKE_C_EXTENSIONS OFF)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+ 
+-if(FBGEMM_BUILD_TESTS AND NOT TARGET gtest)
++if(FALSE)
+   #Download Googletest framework from github if
+   #GOOGLETEST_SOURCE_DIR is not specified.
+   if(NOT DEFINED GOOGLETEST_SOURCE_DIR)
+@@ -78,7 +78,7 @@ macro(add_gtest TESTNAME)
+     target_link_libraries(${TESTNAME} ${OpenMP_CXX_LIBRARIES})
+   endif()
+ 
+-  add_dependencies(${TESTNAME} gtest fbgemm)
++  add_dependencies(${TESTNAME} fbgemm)
+   add_test(${TESTNAME} ${TESTNAME})
+   set_target_properties(${TESTNAME} PROPERTIES FOLDER test)
+ endmacro()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 20/32] gnu: Add qnnpack.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (18 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 19/32] gnu: Add fbgemm David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 21/32] gnu: Add foxi David Elsing
                       ` (12 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (qnnpack): New variable.
---
 gnu/packages/machine-learning.scm | 51 +++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 8a118337c1..ade2291d2f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4018,6 +4018,57 @@ (define-public nnpack
       (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
+(define-public qnnpack
+  (let ((commit "7d2a4e9931a82adc3814275b6219a03e24e36b4c")
+        (revision "0"))
+    (package
+      (name "qnnpack")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pytorch/qnnpack")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1dgzriiaz9arsrfwhx42y4l74wbzn6xvdmllfb66v4pmvi5gpxc5"))
+         (modules '((guix build utils)))
+         (snippet
+          '(delete-file-recursively "deps"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; The shared library build fails with linker errors, so we build the
+        ;; static library with -fPIC as in the bundled PyTorch version.
+        #:configure-flags
+        ''("-DQNNPACK_LIBRARY_TYPE=static"
+           "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("IF.*SOURCE_DIR.*")
+                   "IF(FALSE)\n")
+                  (("IF\\(NOT TARGET.*")
+                   "IF(FALSE)\n")
+                  (("TARGET_LINK_LIBRARIES.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(TARGET_LINK_LIBRARIES.*) fp16 (.*)" _ before after)
+                   (string-append before " " after))))))))
+      (inputs (list clog cpuinfo fp16 fxdiv psimd pthreadpool))
+      (native-inputs (list googletest googlebenchmark))
+      (home-page "https://github.com/pytorch/qnnpack")
+      (synopsis "Quantized Neural Network PACKage")
+      (description "QNNPACK is a library for low-precision neural network
+inference.  It contains the implementation of common neural network operators
+on quantized 8-bit tensors.")
+      (supported-systems
+       '("armv7-linux" "aarch64-linux" "i686-linux" "x86_64-linux"))
+      (license license:bsd-3))))
+
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 21/32] gnu: Add foxi.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (19 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 20/32] gnu: Add qnnpack David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 22/32] gnu: Add ideep-pytorch David Elsing
                       ` (11 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (foxi): New variable.
* gnu/packages/patches/foxi-fix-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                              |  1 +
 gnu/packages/machine-learning.scm         | 29 ++++++++++++
 gnu/packages/patches/foxi-fix-build.patch | 55 +++++++++++++++++++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e0fa9e1f78..15d9d50de7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1207,6 +1207,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
+  %D%/packages/patches/foxi-fix-build.patch			\
   %D%/packages/patches/fp16-implicit-double.patch		\
   %D%/packages/patches/fp16-system-libraries.patch		\
   %D%/packages/patches/fpc-reproducibility.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ade2291d2f..f4f16f0bea 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4214,6 +4214,35 @@ (define-public tensorpipe
 the tensors contained therein.")
       (license license:bsd-3))))
 
+(define-public foxi
+  (let
+      ((commit "c278588e34e535f0bb8f00df3880d26928038cad")
+       (revision "0"))
+    (package
+      (name "foxi")
+      (version (git-version "1.4.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/houseroad/foxi")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0q3ssm5hmmvwfwx87mnnajbavzgpahybw6rpn8ysr9r095dwgq5a"))
+                (patches (search-patches "foxi-fix-build.patch"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; No tests
+        #:tests? #f))
+      (home-page "https://github.com/houseroad/foxi")
+      (synopsis "ONNXIFI with Facebook Extension")
+      (description "ONNX Interface for Framework Integration is a cross-platform
+API for loading and executing ONNX graphs on optimized backends.  This package
+contains facebook extensions and is used by PyTorch.")
+      (license license:expat))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
diff --git a/gnu/packages/patches/foxi-fix-build.patch b/gnu/packages/patches/foxi-fix-build.patch
new file mode 100644
index 0000000000..d82090ad38
--- /dev/null
+++ b/gnu/packages/patches/foxi-fix-build.patch
@@ -0,0 +1,55 @@
+Taken from https://github.com/houseroad/foxi/pull/25.
+
+diff --git a/foxi/onnxifi_dummy.c b/foxi/onnxifi_dummy.c
+index 2115af9..73e25fc 100644
+--- a/foxi/onnxifi_dummy.c
++++ b/foxi/onnxifi_dummy.c
+@@ -103,7 +103,10 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph) {
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader) {
++
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+   }
+@@ -215,6 +218,8 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI
+ onnxWaitEventFor(onnxEvent event,
+                  uint32_t timeoutMs,
+                  onnxEventState* eventState,
+-                 onnxStatus* eventStatus) {
++		  onnxStatus* eventStatus,
++		  char* message,
++		  size_t* messageLength) {
+   return ONNXIFI_STATUS_SUCCESS;
+ }
+\ No newline at end of file
+diff --git a/foxi/onnxifi_wrapper.c b/foxi/onnxifi_wrapper.c
+index 98a9325..abe1440 100644
+--- a/foxi/onnxifi_wrapper.c
++++ b/foxi/onnxifi_wrapper.c
+@@ -761,7 +761,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightsCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph)
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader)
+ {
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+@@ -797,7 +799,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     onnxModel,
+     weightsCount,
+     weightDescriptors,
+-    &graph_wrapper->graph);
++    &graph_wrapper->graph,
++    maxSeqLength,
++    deferredWeightReader);
+   switch (status) {
+     case ONNXIFI_STATUS_SUCCESS:
+     case ONNXIFI_STATUS_FALLBACK:
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 22/32] gnu: Add ideep-pytorch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (20 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 21/32] gnu: Add foxi David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
                       ` (10 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index f4f16f0bea..48b8edc83c 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -52,6 +52,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (guix download)
   #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system pyproject)
@@ -4243,6 +4244,31 @@ (define-public foxi
 contains facebook extensions and is used by PyTorch.")
       (license license:expat))))
 
+(define-public ideep-pytorch
+  (package
+    (name "ideep-pytorch")
+    (version "3.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0y6r938qryi3bnf15rp0fbilsfimdcgmvsa0ygwrn3zifw6386rb"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan
+      ''(("include" "include"))))
+    (home-page "https://github.com/intel/ideep")
+    (synopsis "Ideep headers for interal use by PyTorch")
+    (description "This library is used internally as header-only library by
+PyTorch.")
+    (license license:expat)))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 23/32] gnu: xnnpack: Update to commit 51a9875.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (21 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 22/32] gnu: Add ideep-pytorch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
                       ` (9 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

The tests which fail to build if building the shared library are removed by a
patch. Autogenerated files are removed by a snippet and generated in a
separate build phase.

* gnu/packages/machine-learning.scm (xnnpack): Update to commit 51a9875.
[source]: Add patch for tests. Add snippet to remove autogenerated files.
[arguments]: New modules and phase arguments.
[inputs]: Add clog and cpuinfo.
[native-inputs]: New field.
* gnu/packages/patches/xnnpack-remove-broken-tests.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/patches/xnnpack-system-libraries.patch: Update patch.
---
 gnu/local.mk                                  |    1 +
 gnu/packages/machine-learning.scm             |  110 +-
 .../patches/xnnpack-remove-broken-tests.patch |  337 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 4 files changed, 2928 insertions(+), 1653 deletions(-)
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 15d9d50de7..f6e1a45a38 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2205,6 +2205,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
+  %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
   %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 48b8edc83c..55b5ad8535 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4073,41 +4073,110 @@ (define-public qnnpack
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (commit "ae108ef49aa5623b896fc93d4298c49d1750d9ba")
-        (revision "2"))
+        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
+        (revision "3"))
     (package
       (name "xnnpack")
       (version (git-version version revision commit))
       (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0q68q2jxiiiblx45q4337k13ppgh5vqjwrwznchcnpb8hawjj3zl"))
-                (patches (search-patches "xnnpack-system-libraries.patch"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url home-page) (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
+         ;; Some tests fail to link as they use internal symbols, which are
+         ;; not included in the shared library.
+         ;; XXX: Additionally, these tests fail on i686 due to incorrect results:
+         ;; 171 - f32-vlrelu-test (Failed)
+         ;; 211 - qs8-gavgpool-minmax-fp32-test (Failed)
+         ;; 224 - qu8-avgpool-minmax-fp32-test (Failed)
+         ;; 228 - qu8-gavgpool-minmax-fp32-test (Failed)
+         ;; 263 - x32-packx-test (Failed)
+         (patches (search-patches "xnnpack-remove-broken-tests.patch"))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (ice-9 textual-ports)
+                    (srfi srfi-26)))
+         (snippet
+          '(begin
+             ;; Remove autogenerated files
+             (for-each
+              (lambda (dir)
+                (let ((gendir (string-append "src/" dir "/gen")))
+                  (when (file-exists? gendir)
+                    (delete-file-recursively gendir)
+                    ;; Needed for the scripts generating the files
+                    (mkdir gendir))))
+              (scandir "src" (negate (cut member <> '("." "..")))))
+             (delete-file-recursively "google3")
+             (delete-file "cmake/microkernels.cmake")
+             ;; Additional autogenerated files which contain the string
+             ;; "Auto-generated file"
+             (for-each
+              (lambda (dir)
+                (for-each
+                 (lambda (name)
+                   (let ((path (string-append dir "/" name)))
+                     (when (call-with-input-file path
+                             (lambda (port)
+                               (string-contains
+                                (get-string-all port)
+                                "Auto-generated file")))
+                       (delete-file path))))
+                 (scandir dir (negate (cut member <> '("." ".."))))))
+              '("test" "bench" "eval" "models" "src/enums" "src/xnnpack"))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:configure-flags '("-DXNNPACK_USE_SYSTEM_LIBS=YES"
+       (list
+        #:build-type "Release" ;; Debugging symbols require a lot of disk space
+        #:configure-flags ''("-DXNNPACK_USE_SYSTEM_LIBS=YES"
                              "-DBUILD_SHARED_LIBS=ON"
+                             "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
                              "-DXNNPACK_LIBRARY_TYPE=shared"
-                             "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                              "-DXNNPACK_BUILD_BENCHMARKS=FALSE")
-
-         ;; FIXME: Building tests leads to a CMake error:
-         ;;
-         ;;   ADD_LIBRARY cannot create target "all_microkernels" because
-         ;;   another target with the same name already exists.
-         #:tests? #f))
+        #:modules '((ice-9 ftw)
+                    (guix build cmake-build-system)
+                    (guix build utils))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'fix-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("TARGET_INCLUDE_DIRECTORIES\\((pthreadpool|cpuinfo).*") "")
+                  ((".*IF\\(NOT TARGET gtest\\).*")
+                   "IF(FALSE)\n")
+                  (("SET\\(CMAKE_CXX_STANDARD 11\\)")
+                   "SET(CMAKE_CXX_STANDARD 14)")
+                  (("AMD64") "x86_64"))))
+            (add-after 'patch-source-shebangs 'generate-files
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (when (and (string-prefix? "generate" name)
+                              (string-suffix? ".sh" name)
+                              (not (equal? "generate-amalgamation.sh" name)))
+                     (display (string-append name "\n"))
+                     (invoke "bash" (string-append "scripts/" name))))
+                 (scandir "scripts"))
+                ;; These need to run after the above scripts
+                (display "Remaining files\n")
+                (invoke "python3" "tools/update-microkernels.py")
+                (substitute* "tools/amalgamate-microkernels.py"
+                  (("BUILD") "BUILD.bazel"))
+                (invoke "bash" "scripts/generate-amalgamation.sh"))))))
       (inputs
-       (list cpuinfo
+       (list clog
+             cpuinfo
              pthreadpool
              googletest
              googlebenchmark
              fxdiv
              fp16
              psimd))
+      (native-inputs (list python-pyyaml python-wrapper))
       (synopsis "Optimized floating-point neural network inference operators")
       (description
        "XNNPACK is a highly optimized library of floating-point neural network
@@ -4116,6 +4185,9 @@ (define-public xnnpack
 instead it provides low-level performance primitives for accelerating
 high-level machine learning frameworks, such as TensorFlow Lite,
 TensorFlow.js, PyTorch, and MediaPipe.")
+      (supported-systems
+       '("armv7-linux" "aarch64-linux" "riscv64-linux"
+         "i686-linux" "x86_64-linux" "i686-mingw" "x86_64-mingw"))
       (license license:bsd-3))))
 
 (define-public xnnpack-for-torch2
diff --git a/gnu/packages/patches/xnnpack-remove-broken-tests.patch b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
new file mode 100644
index 0000000000..91b7ca9998
--- /dev/null
+++ b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
@@ -0,0 +1,337 @@
+These tests fail to build because we are building a shared library.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 95df99eae..ab57d5efa 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -978,16 +978,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+-    ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(argmax-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(argmax-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME argmax-pooling-nhwc-test COMMAND argmax-pooling-nhwc-test)
+-
+-    ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1066,11 +1056,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(copy-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME copy-nc-eager-test COMMAND copy-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+-
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-nchw2nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(depth-to-space-nchw2nhwc-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1116,11 +1101,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+-
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1146,11 +1126,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1191,11 +1166,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+-
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1312,16 +1282,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(fusion-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fusion-test COMMAND fusion-test)
+ 
+-    ADD_EXECUTABLE(memory-planner-test test/memory-planner-test.cc)
+-    TARGET_INCLUDE_DIRECTORIES(memory-planner-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(memory-planner-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME memory-planner-test COMMAND memory-planner-test)
+-
+-    ADD_EXECUTABLE(subgraph-fp16-test test/subgraph-fp16.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subgraph-fp16-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subgraph-fp16-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME subgraph-fp16-test COMMAND subgraph-fp16-test)
+-
+     ADD_EXECUTABLE(subgraph-nchw-test test/subgraph-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(subgraph-nchw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(subgraph-nchw-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1347,226 +1307,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_INCLUDE_DIRECTORIES(argmax-pooling-2d-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(argmax-pooling-2d-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME argmax-pooling-2d-test COMMAND argmax-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+-    TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+-
+-    ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+-    TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+-
+-    ADD_EXECUTABLE(clamp-test test/clamp.cc)
+-    TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME clamp-test COMMAND clamp-test)
+-
+-    ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate2-test COMMAND concatenate2-test)
+-
+-    ADD_EXECUTABLE(concatenate3-test test/concatenate3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate3-test COMMAND concatenate3-test)
+-
+-    ADD_EXECUTABLE(concatenate4-test test/concatenate4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate4-test COMMAND concatenate4-test)
+-
+-    ADD_EXECUTABLE(convert-test test/convert.cc)
+-    TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME convert-test COMMAND convert-test)
+-
+-    ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+-
+-    ADD_EXECUTABLE(copy-test test/copy.cc)
+-    TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME copy-test COMMAND copy-test)
+-
+-    ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+-    SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+-
+-    ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+-    TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+-
+-    ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+-
+-    ADD_EXECUTABLE(divide2-test test/divide2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME divide2-test COMMAND divide2-test)
+-
+-    ADD_EXECUTABLE(elu-test test/elu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME elu-test COMMAND elu-test)
+-
+-    ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+-
+-    ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+-
+-    ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+-
+-    ADD_EXECUTABLE(floor-test test/floor.cc)
+-    TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME floor-test COMMAND floor-test)
+-
+-    ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+-    TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+-    TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+-
+-    ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+-
+-    ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+-
+-    ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+-
+-    ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+-
+-    ADD_EXECUTABLE(negate-test test/negate.cc)
+-    TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME negate-test COMMAND negate-test)
+-
+-    ADD_EXECUTABLE(prelu-test test/prelu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME prelu-test COMMAND prelu-test)
+-
+-    ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+-    SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+-
+-    ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+-    SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+-
+-    ADD_EXECUTABLE(softmax-test test/softmax.cc)
+-    TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME softmax-test COMMAND softmax-test)
+-
+-    ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+-
+-    ADD_EXECUTABLE(square-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-test COMMAND square-test)
+-
+-    ADD_EXECUTABLE(square-root-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-root-test COMMAND square-root-test)
+-
+-    ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+-    TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+-
+-    ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+-
+-    ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+-
+-    ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+-
+-    ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+-
+-    ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+-
+-    ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+   # ---[ Normalization unit tests
+@@ -2834,21 +2574,7 @@ IF(XNNPACK_BUILD_TESTS)
+     ADD_EXECUTABLE(microkernel-utils-test test/microkernel-utils.cc)
+     TARGET_INCLUDE_DIRECTORIES(microkernel-utils-test PRIVATE include src)
+     TARGET_LINK_LIBRARIES(microkernel-utils-test PRIVATE microkernel-utils gtest gtest_main pthreadpool)
+-
+-    ADD_EXECUTABLE(operator-utils-test test/operator-utils.cc)
+-    TARGET_INCLUDE_DIRECTORIES(operator-utils-test PRIVATE include src)
+-    TARGET_LINK_LIBRARIES(operator-utils-test PRIVATE XNNPACK gtest gtest_main pthreadpool)
+   ENDIF()
+-
+-  ADD_EXECUTABLE(packing-test test/packing.cc)
+-  TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+-
+-  ADD_EXECUTABLE(indirection-test test/indirection.cc)
+-  TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+ # ---[ XNNPACK microbenchmarks
diff --git a/gnu/packages/patches/xnnpack-system-libraries.patch b/gnu/packages/patches/xnnpack-system-libraries.patch
index bc9225e927..a711aa0d6c 100644
--- a/gnu/packages/patches/xnnpack-system-libraries.patch
+++ b/gnu/packages/patches/xnnpack-system-libraries.patch
@@ -2,1794 +2,2659 @@ This patch allows the build process to use the provided dependencies instead
 of adding their source as CMake sub-directories (in which case "make install"
 would install googletest's and googlebenchmark's libraries and headers).
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 177b98d5..937385c3 100755
---- CMakeLists.txt	2022-07-06 22:35:09.748104656 +0200
-+++ CMakeLists.txt	2022-07-06 22:47:34.504666953 +0200
-@@ -6608,10 +6608,6 @@
+diff a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
+@@ -850,25 +850,8 @@
+     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
    ENDIF()
  ENDIF()
- TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
+ IF(XNNPACK_BUILD_LIBRARY)
+   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
+-  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
+   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
+ ENDIF()
  
- # ---[ Configure FXdiv
- IF(NOT TARGET fxdiv)
-@@ -6630,9 +6626,6 @@
+@@ -889,12 +872,6 @@
      SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
+-IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
+-ENDIF()
  
  # ---[ Configure FP16
  IF(NOT TARGET fp16)
-@@ -6651,10 +6644,6 @@
+@@ -913,17 +890,7 @@
      SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
+ IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
+-
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
+   INSTALL(TARGETS XNNPACK
+       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -943,7 +910,7 @@
+   # Helper libraries
+   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
+   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
+-  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
++  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
+   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
+@@ -960,22 +927,22 @@
+     # ---[ Build operator-level unit tests
+     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
+ 
+     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
+ 
+     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
+ 
+     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+@@ -985,27 +952,27 @@
+ 
+     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
+ 
+     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
+@@ -1015,12 +982,12 @@
+ 
+     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
+ 
+     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
+ 
+     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
+@@ -1035,25 +1002,25 @@
+ 
+     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
+ 
+     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
+ 
+     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
+     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
+     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
+     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
+ 
+     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
+@@ -1068,7 +1035,7 @@
+ 
+     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+@@ -1083,197 +1050,197 @@
+ 
+     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
+ 
+     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
+ 
+     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
+ 
+     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
+ 
+     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
+ 
+     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
+ 
+     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
+ 
+     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
+ 
+     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
+ 
+     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
+ 
+     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
+ 
+     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
+@@ -1293,12 +1260,12 @@
+ 
+     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
+ 
+     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
+ 
+     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
+@@ -1350,22 +1317,22 @@
+ 
+     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+ 
+     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+ 
+     ADD_EXECUTABLE(clamp-test test/clamp.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME clamp-test COMMAND clamp-test)
+ 
+     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+@@ -1385,187 +1352,187 @@
+ 
+     ADD_EXECUTABLE(convert-test test/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME convert-test COMMAND convert-test)
+ 
+     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+ 
+     ADD_EXECUTABLE(copy-test test/copy.cc)
+     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME copy-test COMMAND copy-test)
+ 
+     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+ 
+     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+ 
+     ADD_EXECUTABLE(divide2-test test/divide2.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME divide2-test COMMAND divide2-test)
+ 
+     ADD_EXECUTABLE(elu-test test/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME elu-test COMMAND elu-test)
+ 
+     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+ 
+     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+ 
+     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+ 
+     ADD_EXECUTABLE(floor-test test/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME floor-test COMMAND floor-test)
+ 
+     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+ 
+     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+ 
+     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+ 
+     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+ 
+     ADD_EXECUTABLE(negate-test test/negate.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME negate-test COMMAND negate-test)
+ 
+     ADD_EXECUTABLE(prelu-test test/prelu.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME prelu-test COMMAND prelu-test)
+ 
+     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+ 
+     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
+     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+ 
+     ADD_EXECUTABLE(softmax-test test/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME softmax-test COMMAND softmax-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+ 
+     ADD_EXECUTABLE(square-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-test COMMAND square-test)
+ 
+     ADD_EXECUTABLE(square-root-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-root-test COMMAND square-root-test)
+ 
+     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+ 
+     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+ 
+     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+ 
+     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+ 
+     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+ 
+     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+ 
+     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+@@ -1591,355 +1558,355 @@
  
- INSTALL(TARGETS XNNPACK
-     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -6705,7 +6694,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(add-nd-test add-nd-test)
- 
-   ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -6759,7 +6748,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(clamp-nc-test clamp-nc-test)
- 
-   ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -6777,7 +6766,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convert-nc-test convert-nc-test)
- 
-   ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-@@ -6786,7 +6775,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nhwc-test convolution-nhwc-test)
- 
-   ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-@@ -6795,7 +6784,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nchw-test convolution-nchw-test)
- 
-   ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -6813,7 +6802,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(deconvolution-nhwc-test deconvolution-nhwc-test)
- 
-   ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -6840,7 +6829,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(divide-nd-test divide-nd-test)
- 
-   ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-@@ -6858,7 +6847,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(fully-connected-nc-test fully-connected-nc-test)
- 
-   ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-@@ -6876,7 +6865,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-nwc-test global-average-pooling-nwc-test)
- 
-   ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-@@ -6885,7 +6874,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-ncw-test global-average-pooling-ncw-test)
- 
-   ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-@@ -6894,7 +6883,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(hardswish-nc-test hardswish-nc-test)
- 
-   ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-@@ -6903,7 +6892,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(leaky-relu-nc-test leaky-relu-nc-test)
- 
-   ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-@@ -6912,7 +6901,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(max-pooling-nhwc-test max-pooling-nhwc-test)
- 
-   ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-@@ -6921,7 +6910,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(maximum-nd-test maximum-nd-test)
- 
-   ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-@@ -6930,7 +6919,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(minimum-nd-test minimum-nd-test)
- 
-   ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-@@ -6939,7 +6928,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(multiply-nd-test multiply-nd-test)
- 
-   ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-@@ -6957,7 +6946,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(prelu-nc-test prelu-nc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-@@ -6966,7 +6955,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nhwc-test resize-bilinear-nhwc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-@@ -6975,7 +6964,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nchw-test resize-bilinear-nchw-test)
- 
-   ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-@@ -7029,7 +7018,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(subtract-nd-test subtract-nd-test)
- 
-   ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -7084,7 +7073,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-f32-vcvt-test f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-minmax-test test/f16-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7093,7 +7082,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-dwconv-minmax-test f16-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7102,7 +7091,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-gavgpool-minmax-test f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7111,7 +7100,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-gemm-minmax-test f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7120,7 +7109,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-ibilinear-test f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc $<TARGET_OBJECTS:all_microkernels>  $<TARGET_OBJECTS:packing>)
-@@ -7129,7 +7118,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-igemm-minmax-test f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7138,7 +7127,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-maxpool-minmax-test f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7147,7 +7136,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-spmm-minmax-test f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7156,7 +7145,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
+ 
+   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
+ 
+   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vadd-minmax-test f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7165,7 +7154,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vaddc-minmax-test f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7174,7 +7163,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vclamp-test f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7183,7 +7172,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
+ 
+   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdiv-minmax-test f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7192,7 +7181,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdivc-minmax-test f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7201,7 +7190,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrdivc-minmax-test f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7210,7 +7199,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
+ 
+   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vhswish-test f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7219,7 +7208,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
+ 
+   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vlrelu-test f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7228,7 +7217,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmax-test f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7237,7 +7226,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmaxc-test f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7246,7 +7235,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmin-test f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7255,7 +7244,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
+ 
+   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vminc-test f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7264,7 +7253,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
+ 
+   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmul-minmax-test f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7273,7 +7262,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulc-minmax-test f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7282,7 +7271,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulcaddc-minmax-test f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7291,7 +7280,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
+ 
+   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-prelu-test f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7300,7 +7289,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
+ 
+   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
+ 
+   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
+ 
+   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsub-minmax-test f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7309,7 +7298,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsubc-minmax-test f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7318,7 +7307,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrsubc-minmax-test f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7327,7 +7316,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-argmaxpool-test f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7336,7 +7325,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
+ 
+   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-avgpool-minmax-test f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7345,7 +7334,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc-test f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7354,7 +7343,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc2chw-test f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-test test/f32-dwconv.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7363,7 +7352,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-test f32-dwconv-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7372,7 +7361,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv2d-chw-test f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-minmax-test test/f32-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7381,7 +7370,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-minmax-test f32-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7390,7 +7379,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-f16-vcvt-test f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7399,7 +7388,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qs8-vcvt-test f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7408,7 +7397,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qu8-vcvt-test f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7417,7 +7406,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-cw-test f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7426,7 +7415,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-minmax-test f32-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemm-test test/f32-gemm.cc test/f32-gemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7435,7 +7424,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-test f32-gemm-test)
- 
-   ADD_EXECUTABLE(f32-gemm-relu-test test/f32-gemm-relu.cc test/f32-gemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7444,7 +7433,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-relu-test f32-gemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-gemm-minmax-test test/f32-gemm-minmax.cc test/f32-gemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7453,7 +7442,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-minmax-test f32-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemminc-minmax-test test/f32-gemminc-minmax.cc test/f32-gemminc-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7462,7 +7451,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemminc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemminc-minmax-test f32-gemminc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7471,7 +7460,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
+ 
+@@ -1975,13 +1942,13 @@
+ 
+   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-test f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7480,7 +7469,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-chw-test f32-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f32-igemm-test test/f32-igemm.cc test/f32-igemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7489,7 +7478,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-test f32-igemm-test)
- 
-   ADD_EXECUTABLE(f32-igemm-relu-test test/f32-igemm-relu.cc test/f32-igemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7498,7 +7487,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-relu-test f32-igemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-igemm-minmax-test test/f32-igemm-minmax.cc test/f32-igemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7511,7 +7500,7 @@
-     # Work-around for "too many sections" error
-     TARGET_COMPILE_OPTIONS(f32-igemm-minmax-test PRIVATE "$<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>>:-Wa,-mbig-obj>")
-   ENDIF()
--  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-minmax-test f32-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7520,7 +7509,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
+ 
+@@ -2016,13 +1983,13 @@
+ 
+   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-maxpool-minmax-test f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7529,7 +7518,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-pavgpool-minmax-test f32-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ppmm-minmax-test test/f32-ppmm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7538,7 +7527,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-ppmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-ppmm-minmax-test f32-ppmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7547,7 +7536,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
+ 
+@@ -2034,259 +2001,259 @@
+ 
+   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-prelu-test f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7556,7 +7545,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddexpminusmax-test f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7565,7 +7554,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddextexp-test f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7574,7 +7563,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddstoreexpminusmax-test f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7583,7 +7572,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-rmax-test f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7592,7 +7581,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
+ 
+   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-spmm-minmax-test f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7601,7 +7590,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vabs-test f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7610,7 +7599,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-test f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7619,7 +7608,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-minmax-test f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7628,7 +7617,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-relu-test f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7637,7 +7626,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-test f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7646,7 +7635,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-minmax-test f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7655,7 +7644,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-relu-test f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7664,7 +7653,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vclamp-test f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7673,7 +7662,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
+ 
+   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vhswish-test f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7682,7 +7671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-test f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7691,7 +7680,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-minmax-test f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7700,7 +7689,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-relu-test f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7709,7 +7698,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-test f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7718,7 +7707,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-minmax-test f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7727,7 +7716,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-relu-test f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7736,7 +7725,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-test f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7745,7 +7734,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-minmax-test f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7754,7 +7743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-relu-test f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7763,7 +7752,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-velu-test f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7772,7 +7761,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vlrelu-test f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7781,7 +7770,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmax-test f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7790,7 +7779,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmaxc-test f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7799,7 +7788,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmin-test f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7808,7 +7797,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
+ 
+   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vminc-test f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7817,7 +7806,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-test f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7826,7 +7815,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-minmax-test f32-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7835,7 +7824,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-relu-test f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7844,7 +7833,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-test f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7853,7 +7842,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-minmax-test f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7862,7 +7851,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-relu-test f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7871,7 +7860,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulcaddc-minmax-test f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7880,7 +7869,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vneg-test f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7889,7 +7878,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
+ 
+   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrelu-test f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7898,7 +7887,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndne-test f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7907,7 +7896,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
+ 
+   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndz-test f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7916,7 +7905,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
+ 
+   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndu-test f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7925,7 +7914,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndd-test f32-vrndd-test)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-test test/f32-vscaleexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7934,7 +7923,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleexpminusmax-test f32-vscaleexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-test test/f32-vscaleextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7943,7 +7932,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleextexp-test f32-vscaleextexp-test)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7952,7 +7941,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
+ 
+@@ -2304,91 +2271,91 @@
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsigmoid-test f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7961,7 +7950,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqr-test f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7970,7 +7959,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiff-test f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7979,7 +7968,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiffc-test f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7988,7 +7977,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrt-test f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7997,7 +7986,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-test f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8006,7 +7995,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-minmax-test f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8015,7 +8004,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-relu-test f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8024,7 +8013,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-test f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8033,7 +8022,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-minmax-test f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8042,7 +8031,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-relu-test f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8051,7 +8040,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-test f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8060,7 +8049,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-minmax-test f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8069,7 +8058,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-relu-test f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-minmax-fp32-test test/qc8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8078,7 +8067,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qc8-dwconv-minmax-fp32-test qc8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-gemm-minmax-fp32-test test/qc8-gemm-minmax-fp32.cc test/qc8-gemm-minmax-fp32-2.cc test/qc8-gemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8087,7 +8076,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-gemm-minmax-fp32-test qc8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-igemm-minmax-fp32-test test/qc8-igemm-minmax-fp32.cc test/qc8-igemm-minmax-fp32-2.cc test/qc8-igemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8096,7 +8085,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-igemm-minmax-fp32-test qc8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-fp32-test test/qs8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8105,7 +8094,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-fp32-test qs8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-rndnu-test test/qs8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8114,7 +8103,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-rndnu-test qs8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8123,7 +8112,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
+ 
+   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
+ 
+@@ -2406,31 +2373,31 @@
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-f32-vcvt-test qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8132,7 +8121,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-fp32-test qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8141,7 +8130,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-rndnu-test qs8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-fp32-test test/qs8-gemm-minmax-fp32.cc test/qs8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8150,7 +8139,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-fp32-test qs8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-rndnu-test test/qs8-gemm-minmax-rndnu.cc test/qs8-gemm-minmax-rndnu-2.cc test/qs8-gemm-minmax-rndnu-3.cc test/qs8-gemm-minmax-rndnu-4.cc test/qs8-gemm-minmax-rndnu-5.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8159,7 +8148,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-rndnu-test qs8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-fp32-test test/qs8-igemm-minmax-fp32.cc test/qs8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8168,7 +8157,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-fp32-test qs8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-rndnu-test test/qs8-igemm-minmax-rndnu.cc test/qs8-igemm-minmax-rndnu-2.cc test/qs8-igemm-minmax-rndnu-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8177,7 +8166,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-rndnu-test qs8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8186,7 +8175,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2461,81 +2428,81 @@
+   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-requantization-test qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8195,7 +8184,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
+ 
+   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vadd-minmax-test qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8204,7 +8193,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vaddc-minmax-test qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8213,7 +8202,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmul-minmax-fp32-test qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8222,7 +8211,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmulc-minmax-fp32-test qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-test test/qu8-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8231,7 +8220,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-avgpool-minmax-test qu8-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-fp32-test test/qu8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8240,7 +8229,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-fp32-test qu8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-rndnu-test test/qu8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8249,7 +8238,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-rndnu-test qu8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8258,7 +8247,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-f32-vcvt-test qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8267,7 +8256,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-fp32-test qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8276,7 +8265,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-rndnu-test qu8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-fp32-test test/qu8-gemm-minmax-fp32.cc test/qu8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8285,7 +8274,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-fp32-test qu8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-rndnu-test test/qu8-gemm-minmax-rndnu.cc test/qu8-gemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8294,7 +8283,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-rndnu-test qu8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-fp32-test test/qu8-igemm-minmax-fp32.cc test/qu8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8303,7 +8292,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-fp32-test qu8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-rndnu-test test/qu8-igemm-minmax-rndnu.cc test/qu8-igemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8312,7 +8301,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-rndnu-test qu8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8321,7 +8310,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2566,161 +2533,161 @@
+   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-requantization-test qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8330,7 +8319,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
+ 
+   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vadd-minmax-test qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8339,7 +8328,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vaddc-minmax-test qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8348,7 +8337,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-fp32-test qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8357,7 +8346,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-rndnu-test qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8366,7 +8355,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-fp32-test qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8375,7 +8364,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-rndnu-test qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8384,7 +8373,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
+ 
+   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
+ 
+   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
+ 
+   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
+ 
+   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
+ 
+   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-ibilinear-test s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8393,7 +8382,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-maxpool-minmax-test s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8402,7 +8391,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-vclamp-test s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8411,7 +8400,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
+ 
+   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-lut32norm-test u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8420,7 +8409,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
+ 
+   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-ibilinear-test u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8429,7 +8418,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-maxpool-minmax-test u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8438,7 +8427,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-rmax-test u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8447,7 +8436,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
+ 
+   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-vclamp-test u8-vclamp-test)
- 
-   ADD_EXECUTABLE(x8-transpose-test test/x8-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8456,7 +8445,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-transpose-test x8-transpose-test)
- 
-   ADD_EXECUTABLE(x16-transpose-test test/x16-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8465,7 +8454,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x16-transpose-test x16-transpose-test)
- 
-   ADD_EXECUTABLE(x32-packx-test test/x32-packx.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8474,7 +8463,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-packx-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-packx-test x32-packx-test)
- 
-   ADD_EXECUTABLE(x32-unpool-test test/x32-unpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8483,7 +8472,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-unpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-unpool-test x32-unpool-test)
- 
-   ADD_EXECUTABLE(x32-depthtospace2d-chw2hwc-test test/x32-depthtospace2d-chw2hwc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8492,7 +8481,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-depthtospace2d-chw2hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-depthtospace2d-chw2hwc-test x32-depthtospace2d-chw2hwc-test)
- 
-   ADD_EXECUTABLE(x32-transpose-test test/x32-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8501,7 +8490,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-transpose-test x32-transpose-test)
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8510,7 +8499,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
+ 
+@@ -2762,25 +2729,25 @@
+ 
+   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-zip-test x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8519,7 +8508,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
+ 
+   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
    TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x64-transpose-test x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8528,7 +8517,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
+ 
+   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-lut-test x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8537,7 +8526,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
+ 
+   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-zip-test x8-zip-test)
- 
-   ADD_EXECUTABLE(xx-fill-test test/xx-fill.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8546,7 +8535,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-fill-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-fill-test xx-fill-test)
- 
-   ADD_EXECUTABLE(xx-pad-test test/xx-pad.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8555,7 +8544,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-pad-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-pad-test xx-pad-test)
- 
-   ADD_EXECUTABLE(jit-test test/jit.cc)
-@@ -8682,7 +8671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
+ 
+@@ -2842,12 +2809,12 @@
+ 
+   ADD_EXECUTABLE(packing-test test/packing.cc)
+   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+ 
+   ADD_EXECUTABLE(indirection-test test/indirection.cc)
+   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+@@ -2864,7 +2831,7 @@
+   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
+-  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
+@@ -2873,134 +2840,134 @@
+   # ---[ Build accuracy microbenchmarks
+   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
+   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   # ---[ Build accuracy tests
+   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-f16-cvt-eval PROPERTIES
-@@ -8690,7 +8679,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qs8-cvt-eval PROPERTIES
-@@ -8698,7 +8687,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qu8-cvt-eval PROPERTIES
-@@ -8706,7 +8695,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-exp-eval PROPERTIES
-@@ -8714,7 +8703,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expm1minus-eval PROPERTIES
-@@ -8722,7 +8711,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expminus-eval PROPERTIES
-@@ -8730,7 +8719,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundne-eval PROPERTIES
-@@ -8738,7 +8727,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundd-eval PROPERTIES
-@@ -8746,7 +8735,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundu-eval PROPERTIES
-@@ -8754,7 +8743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundz-eval PROPERTIES
-@@ -8762,7 +8751,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo gtest gtest_main)
+-  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
  
-   # ---[ Build end-to-end microbenchmarks
-   ADD_LIBRARY(bench-models STATIC
+   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   IF(XNNPACK_BUILD_LIBRARY)
+@@ -3030,7 +2997,7 @@
+       models/qu8-mobilenet-v2.cc)
+     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
+ 
+     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
+@@ -3039,7 +3006,7 @@
+ 
+     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
+@@ -3049,33 +3016,33 @@
+ 
+     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     # ---[ Build operator-level microbenchmarks
+     ADD_EXECUTABLE(abs-bench bench/abs.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
+@@ -3083,11 +3050,11 @@
+ 
+     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
+     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
+@@ -3095,11 +3062,11 @@
+ 
+     ADD_EXECUTABLE(convert-bench bench/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
+@@ -3107,23 +3074,23 @@
+ 
+     ADD_EXECUTABLE(elu-bench bench/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(floor-bench bench/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
+@@ -3139,7 +3106,7 @@
+ 
+     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
+@@ -3161,378 +3128,378 @@
+   # ---[ Build microkernel-level microbenchmarks
+   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
+   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
+   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ ENDIF()
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 24/32] gnu: Remove xnnpack-for-torch2.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (22 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 25/32] gnu: Add qnnpack-pytorch David Elsing
                       ` (8 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (xnnpack-for-torch2): Delete variable.
(python-pytorch-for-r-torch)[inputs]: Remove field.
* gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |    1 -
 gnu/packages/machine-learning.scm             |   31 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------------
 3 files changed, 2692 deletions(-)
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f6e1a45a38..adcb1be9b7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2207,7 +2207,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
   %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
-  %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 55b5ad8535..6c5b723559 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4190,34 +4190,6 @@ (define-public xnnpack
          "i686-linux" "x86_64-linux" "i686-mingw" "x86_64-mingw"))
       (license license:bsd-3))))
 
-(define-public xnnpack-for-torch2
-  ;; There's currently no tag on this repo.
-  (let ((version "0.0")
-        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
-        (revision "3"))
-    (package
-      (inherit xnnpack)
-      (name "xnnpack")
-      (version (git-version version revision commit))
-      (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
-                (patches (search-patches "xnnpack-for-torch2-system-libraries.patch"))))
-      (arguments
-       (list
-        #:tests? #false
-        #:configure-flags '(list "-DXNNPACK_USE_SYSTEM_LIBS=YES"
-                                 "-DBUILD_SHARED_LIBS=ON"
-                                 "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-                                 "-DXNNPACK_LIBRARY_TYPE=shared"
-                                 "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
-                                 "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
-
 ;; Warning: This package requires AVX2 or AVX-512 instructions.
 (define-public fbgemm
   (package
@@ -4531,9 +4503,6 @@ (define-public python-pytorch-for-r-torch
                   (substitute* "functorch/CMakeLists.txt"
                     (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
                      "$ORIGIN/../torch/lib"))))))
-    (inputs
-     (modify-inputs (package-inputs python-pytorch)
-       (replace "xnnpack" xnnpack-for-torch2)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
diff --git a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch b/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
deleted file mode 100644
index a711aa0d6c..0000000000
--- a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
+++ /dev/null
@@ -1,2660 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
-@@ -850,25 +850,8 @@
-     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
- IF(XNNPACK_BUILD_LIBRARY)
-   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
-   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
- ENDIF()
- 
-@@ -889,12 +872,6 @@
-     SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
--IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--ENDIF()
- 
- # ---[ Configure FP16
- IF(NOT TARGET fp16)
-@@ -913,17 +890,7 @@
-     SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
--TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
- IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
--
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
-   INSTALL(TARGETS XNNPACK
-       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -943,7 +910,7 @@
-   # Helper libraries
-   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
-   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
--  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
-+  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
-   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
-@@ -960,22 +927,22 @@
-     # ---[ Build operator-level unit tests
-     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
- 
-     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
- 
-     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
- 
-     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
- 
-     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -985,27 +952,27 @@
- 
-     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
- 
-     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
-@@ -1015,12 +982,12 @@
- 
-     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
- 
-     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
- 
-     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -1035,25 +1002,25 @@
- 
-     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
- 
-     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
- 
-     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
-     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
- 
-     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
- 
-     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -1068,7 +1035,7 @@
- 
-     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
- 
-     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -1083,197 +1050,197 @@
- 
-     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
- 
-     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
- 
-     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
- 
-     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
- 
-     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
- 
-     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
- 
-     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
- 
-     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
- 
-     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
- 
-     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
- 
-     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
- 
-     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
- 
-     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
- 
-     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
- 
-     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
- 
-     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
- 
-     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
- 
-     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
- 
-     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
- 
-     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
- 
-     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
- 
-     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
- 
-     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
- 
-     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
- 
-     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -1293,12 +1260,12 @@
- 
-     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
- 
-     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
- 
-     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
-@@ -1350,22 +1317,22 @@
- 
-     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
- 
-     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
- 
-     ADD_EXECUTABLE(clamp-test test/clamp.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME clamp-test COMMAND clamp-test)
- 
-     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
-@@ -1385,187 +1352,187 @@
- 
-     ADD_EXECUTABLE(convert-test test/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME convert-test COMMAND convert-test)
- 
-     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
-     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
- 
-     ADD_EXECUTABLE(copy-test test/copy.cc)
-     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME copy-test COMMAND copy-test)
- 
-     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
-     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
- 
-     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
-     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
- 
-     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
-     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
- 
-     ADD_EXECUTABLE(divide2-test test/divide2.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME divide2-test COMMAND divide2-test)
- 
-     ADD_EXECUTABLE(elu-test test/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME elu-test COMMAND elu-test)
- 
-     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
- 
-     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
- 
-     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
- 
-     ADD_EXECUTABLE(floor-test test/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME floor-test COMMAND floor-test)
- 
-     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
- 
-     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
- 
-     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
- 
-     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
- 
-     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
- 
-     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
- 
-     ADD_EXECUTABLE(negate-test test/negate.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME negate-test COMMAND negate-test)
- 
-     ADD_EXECUTABLE(prelu-test test/prelu.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME prelu-test COMMAND prelu-test)
- 
-     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
-     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
- 
-     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
-     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
-     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
- 
-     ADD_EXECUTABLE(softmax-test test/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME softmax-test COMMAND softmax-test)
- 
-     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
- 
-     ADD_EXECUTABLE(square-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-test COMMAND square-test)
- 
-     ADD_EXECUTABLE(square-root-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-root-test COMMAND square-root-test)
- 
-     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
- 
-     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
- 
-     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
- 
-     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
- 
-     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
- 
-     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
- 
-     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
-   ENDIF()
- 
-@@ -1591,355 +1558,355 @@
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
- 
-   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
- 
-   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
- 
-   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
- 
-   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
- 
-   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
- 
-   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
- 
-@@ -1975,13 +1942,13 @@
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
- 
-@@ -2016,13 +1983,13 @@
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
- 
-@@ -2034,259 +2001,259 @@
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
- 
-@@ -2304,91 +2271,91 @@
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
- 
-@@ -2406,31 +2373,31 @@
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
- 
-@@ -2461,81 +2428,81 @@
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
- 
-@@ -2566,161 +2533,161 @@
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
- 
-   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
- 
-   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
- 
-   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
- 
-   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
- 
-   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
- 
-@@ -2762,25 +2729,25 @@
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
- 
-@@ -2842,12 +2809,12 @@
- 
-   ADD_EXECUTABLE(packing-test test/packing.cc)
-   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
- 
-   ADD_EXECUTABLE(indirection-test test/indirection.cc)
-   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
- ENDIF()
- 
-@@ -2864,7 +2831,7 @@
-   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
--  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
-@@ -2873,134 +2840,134 @@
-   # ---[ Build accuracy microbenchmarks
-   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
-   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   # ---[ Build accuracy tests
-   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   IF(XNNPACK_BUILD_LIBRARY)
-@@ -3030,7 +2997,7 @@
-       models/qu8-mobilenet-v2.cc)
-     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
--    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
- 
-     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
-@@ -3039,7 +3006,7 @@
- 
-     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
-@@ -3049,33 +3016,33 @@
- 
-     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     # ---[ Build operator-level microbenchmarks
-     ADD_EXECUTABLE(abs-bench bench/abs.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
-@@ -3083,11 +3050,11 @@
- 
-     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
-     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
-@@ -3095,11 +3062,11 @@
- 
-     ADD_EXECUTABLE(convert-bench bench/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
-@@ -3107,23 +3074,23 @@
- 
-     ADD_EXECUTABLE(elu-bench bench/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(floor-bench bench/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
-@@ -3139,7 +3106,7 @@
- 
-     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
-@@ -3161,378 +3128,378 @@
-   # ---[ Build microkernel-level microbenchmarks
-   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
-   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
-   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- ENDIF()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 25/32] gnu: Add qnnpack-pytorch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (23 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
                       ` (7 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This is an internal fork of QNNPACK in the PyTorch source tree.

* gnu/packages/machine-learning.scm (%python-pytorch-version): New variable.
(%python-pytorch-src): New variable.
(qnnpack-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 127 ++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 6c5b723559..c4785ac2f1 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4313,6 +4313,133 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define %python-pytorch-version "2.2.1")
+
+(define %python-pytorch-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-version))))
+    (file-name (git-file-name "python-pytorch" %python-pytorch-version))
+    (sha256
+     (base32
+      "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (modules '((guix build utils)))
+    (snippet
+     '(begin
+        ;; Bundled or unused code
+        (for-each
+         (lambda (dir)
+           (when (file-exists? dir)
+             (delete-file-recursively dir)))
+         '("android"
+           "aten/src/ATen/native/cuda/cutlass_extensions"
+           "aten/src/ATen/native/quantized/cpu/qnnpack"
+           "caffe2/mobile/contrib/libopencl-stub"
+           "caffe2/mobile/contrib/libvulkan-stub"
+           "third_party"))
+
+        ;; Autogenerated files
+        (for-each
+         delete-file
+         '("aten/src/ATen/nnapi/nnapi_wrapper.cpp"
+           "aten/src/ATen/nnapi/nnapi_wrapper.h"
+           "caffe2/mobile/contrib/ios/mpscnn/mpscnn_kernels.h"
+           "caffe2/proto/caffe2_legacy_pb2.pyi"
+           "caffe2/proto/caffe2_pb2.pyi"
+           "caffe2/proto/hsm_pb2.pyi"
+           "caffe2/proto/metanet_pb2.pyi"
+           "caffe2/proto/predictor_consts_pb2.pyi"
+           "caffe2/proto/prof_dag_pb2.pyi"
+           "caffe2/proto/torch_pb2.pyi"
+           ;; These files contain just lists of floating point values and
+           ;; might be as well hand-written.
+           ;; "test/cpp/api/init_baseline.h"
+           ;; "test/cpp/api/optim_baseline.h"
+           "test/mobile/test_upgrader_bytecode_table_example.cpp"
+           "torch/csrc/jit/mobile/upgrader_mobile.cpp"
+           "torch/csrc/jit/runtime/decomposition_registry_util.cpp"
+           "torch/csrc/jit/runtime/serialized_shape_function_registry.cpp"
+           "torch/csrc/jit/tensorexpr/external_functions_codegen.cpp"
+           "torch/csrc/jit/serialization/mobile_bytecode_generated.h"))
+        (delete-file-recursively ".github")
+        (for-each
+         (lambda (dir)
+           (for-each
+            delete-file
+            (find-files dir "\\.cu$")))
+         '("aten/src/ATen/native/transformers/cuda/flash_attn/kernels"
+           "aten/src/ATen/native/transformers/cuda/mem_eff_attention/kernels"))))))
+
+(define-public qnnpack-pytorch
+  (package
+    (inherit qnnpack)
+    (name "qnnpack-pytorch")
+    (version (string-append "pytorch-" %python-pytorch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        '(begin
+           (rename-file "aten/src/ATen/native/quantized/cpu/qnnpack"
+                        "../qnnpack")
+           (let ((outdir (getcwd)))
+             (chdir "..")
+             (rename-file outdir "dummy")
+             (rename-file "qnnpack" outdir)
+             (chdir outdir)
+             (delete-file-recursively "deps"))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qnnpack)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("project\\(.*" orig)
+                   (apply
+                    string-append
+                    orig "\n"
+                    (map (lambda (name)
+                           (string-append
+                            "option(" name " \"\" ON)\n"))
+                         '("USE_SYSTEM_CPUINFO" "USE_SYSTEM_FP16" "USE_SYSTEM_FXDIV"
+                           "USE_SYSTEM_PSIMD" "USE_SYSTEM_PTHREADPOOL"))))
+                  (("if.*SOURCE_DIR.*")
+                   "if(FALSE)\n")
+                  (("if\\(NOT TARGET (clog|gtest|benchmark).*")
+                   "if(FALSE)\n")
+                  (("target_link_libraries.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(target_link_libraries.*) fp16 (.*)" _ before after)
+                   (string-append before " " after)))))
+            (add-after 'unpack 'fix-cstring-include
+              (lambda _
+                (substitute* "include/pack_block_sparse.h"
+                  (("#include.*<vector>.*" orig)
+                   (string-append orig "\n#include <cstring>\n")))))
+            (add-after 'install 'install-missing-headers
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (install-file (string-append "../source/include/" name)
+                                 (string-append #$output "/include")))
+                 '("pack_block_sparse.h"
+                   "pytorch_qnnpack.h"
+                   "qnnpack_func.h"))
+                (copy-recursively
+                 "../source/src/qnnpack"
+                 (string-append #$output "/include/qnnpack"))))))
+       ;; Some tests occasionally fail on i686 due to floating point rounding.
+       ((#:tests? _ #t)
+        (not (string-prefix? "i686" (or (%current-target-system)
+                                        (%current-system)))))))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (24 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 25/32] gnu: Add qnnpack-pytorch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 27/32] gnu: Add python-pytorch-avx David Elsing
                       ` (6 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

Autogenerated files are also regenerated. The tests can be run, but are
disabled, as they require a long time.

* gnu/packages/machine-learning.scm (python-pytorch): Update to 2.2.1.
[version]: Use %python-pytorch-version.
[source]: Use %python-pytorch-src.
[arguments]: Remove 'make-things-writable phase.  Add 'cmake-patches,
'disable-avx-dependencies, 'set-max-jobs, 'codegen1, 'codegen2, 'build2,
'install2 phases. Adjust 'use-system-libraries and 'check phases.
[native-inputs]: Add doxygen, ideep-pytorch, pocketfft-cpp, python-expecttest,
python-pytest-flakefinder, python-pytest-rerunfailures-13,
python-pytest-shard, python-pytest-xdist, python-hypothesis,
python-types-dataclasses, python-typing-extensions-4.10 and valgrind.
[inputs]: Add asmjit, clog, flatbuffers-next, foxi, fxdiv, libuv,
miniz-for-pytorch, qnnpack, qnnpack-pytorch and oneapi-dnnl. Use nnpack,
oneapi-dnnl, qnnpack, qnnpack-pytorch and xnnpack only for supported systems.
[propagated-inputs]: Add python-filelock, python-fsspec, python-jinja2,
python-networkx, python-optree, python-packaging, python-psutil and
python-sympy. Remove python-cffi and python-six. Use cpuinfo only for
supported systems.
(%python-pytorch-src)[source]: Add patches.
* gnu/packages/patches/python-pytorch-runpath.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-system-libraries.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch: Remove file.
* gnu/packages/patches/python-pytorch-fix-codegen.patch: New file.
* gnu/packages/patches/python-pytorch-without-kineto: New file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   3 +-
 gnu/packages/machine-learning.scm             | 371 ++++++++++++------
 ...ython-pytorch-1.9.0-system-libraries.patch | 139 -------
 .../patches/python-pytorch-fix-codegen.patch  | 167 ++++++++
 .../patches/python-pytorch-runpath.patch      |  19 +-
 .../python-pytorch-system-libraries.patch     | 317 +++++++++++++--
 .../python-pytorch-without-kineto.patch       |  60 +++
 7 files changed, 771 insertions(+), 305 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index adcb1be9b7..c7dfe1b873 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1930,9 +1930,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
   %D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
+  %D%/packages/patches/python-pytorch-fix-codegen.patch		\
   %D%/packages/patches/python-pytorch-runpath.patch		\
   %D%/packages/patches/python-pytorch-system-libraries.patch	\
-  %D%/packages/patches/python-pytorch-1.9.0-system-libraries.patch \
+  %D%/packages/patches/python-pytorch-without-kineto.patch	\
   %D%/packages/patches/python-robotframework-atest.patch	\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c4785ac2f1..a062a2398b 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -105,6 +105,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -123,6 +124,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
@@ -4325,6 +4327,13 @@ (define %python-pytorch-src
     (sha256
      (base32
       "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (patches (search-patches "python-pytorch-system-libraries.patch"
+                             "python-pytorch-runpath.patch"
+                             "python-pytorch-without-kineto.patch"
+                             ;; Some autogeneration scripts depend on the
+                             ;; compile PyTorch library. Therefore, we create
+                             ;; dummy versions which are regenerated later.
+                             "python-pytorch-fix-codegen.patch"))
     (modules '((guix build utils)))
     (snippet
      '(begin
@@ -4444,135 +4453,249 @@ (define-public qnnpack-pytorch
 (define-public python-pytorch
   (package
     (name "python-pytorch")
-    (version "1.13.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "17yxjzwp4zp75fz7czgz9acijzw7dpyqcza50v8y1x7hfg2gw369"))
-              (patches (search-patches "python-pytorch-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-version)
+    (source %python-pytorch-src)
     (build-system python-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'use-system-libraries
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
-                      ;; want to use "system libraries" instead of the bundled
-                      ;; ones.
-                      (setenv "USE_SYSTEM_LIBS" "1")
-
-                      (substitute* "cmake/Dependencies.cmake"
-                        (("if\\(USE_SYSTEM_BIND11\\)")
-                         "if(TRUE)"))
-
-                      ;; XXX: Disable that for simplicity for now.
-                      (setenv "USE_FBGEMM" "0")))
-                  (add-before 'build 'make-things-writable
-                    (lambda _
-                      ;; The 'build_caffe2' function in
-                      ;; 'tools/build_pytorch_libs.py', called from the
-                      ;; top-level 'setup.py', needs write access to this
-                      ;; directory.
-                      (for-each make-file-writable
-                                (find-files "caffe2/proto" "."
-                                            #:directories? #t))))
-                  (replace 'check
-                    (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-                      ;; Run the test suite following the instructions in
-                      ;; 'CONTRIBUTING.md'.  XXX: Unfortunately this doesn't
-                      ;; work, unless you set GUIX_PYTHONPATH presumably.
-                      (when tests?
-                        (add-installed-pythonpath inputs outputs)
-                        (invoke "python" "test/run_test.py"))))
-                  (add-after 'install 'remove-test-executables
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Remove test executables, but keep other executables
-                      ;; such as 'torch_shm_manager' and and .so files such as
-                      ;; 'libtorch_global_deps.so'.
-                      (let ((python-site (site-packages inputs outputs)))
-                        (for-each delete-file
-                                  (find-files python-site
-                                              "(^test_cpp_rpc|_test)$")))))
-                  (add-after 'install 'remove-caffe2-onnx-scripts
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (bin (string-append out "/bin")))
-                        ;; Remove 'convert-caffe2-to-onnx' and
-                        ;; 'convert-onnx-to-caffe2': they seem to be
-                        ;; deprecated and they cause a failure of the
-                        ;; 'sanity-check' phase:
-                        ;;
-                        ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
-                        (for-each delete-file
-                                  (find-files bin "^convert-.*caffe2"))
-
-                        (substitute* (find-files out "^entry_points\\.txt$")
-                          (("^convert-.*" all)
-                           (string-append "# " all "\n")))))))
-
-       ;; XXX: Tests attempt to download data such as
-       ;; <https://raw.githubusercontent.com/pytorch/test-infra/master/stats/slow-tests.json>.
-       ;; We're also missing some Python modules, such as expecttest.
-       #:tests? #f))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'cmake-patches
+            (lambda _
+              (substitute* "cmake/Dependencies.cmake"
+                (("#POCKETFFT_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-native-input "pocketfft-cpp") "/include"))
+                (("#FP16_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-input "fp16") "/include")))))
+          (add-before 'build 'use-system-libraries
+            (lambda _
+              (substitute* '("caffe2/serialize/crc.cc"
+                             "caffe2/serialize/inline_container.cc")
+                (("\"miniz\\.h\"") "<miniz/miniz.h>"))
+              (substitute* "aten/src/ATen/native/vulkan/api/Allocator.h"
+                (("<include/vk_mem_alloc.h>")
+                 "<vk_mem_alloc.h>"))
+              ;; For Vulkan
+              (substitute* "CMakeLists.txt"
+                (("append_cxx_flag.*-Werror=(return-type|range-loop-construct).*") ""))
+              (substitute*
+                  (cons*
+                   "torch/csrc/Module.cpp"
+                   (map
+                    (lambda (name)
+                      (string-append
+                       "torch/utils/benchmark/utils/valgrind_wrapper/"
+                       name))
+                    '("compat_bindings.cpp" "timer_callgrind_template.cpp")))
+                (("<callgrind.h>") "<valgrind/callgrind.h>"))
+              (setenv "USE_FFMPEG" "1")
+              (setenv "USE_VULKAN" "1")
+              (setenv "USE_OPENCV" "1")
+              ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
+              ;; want to use "system libraries" instead of the bundled
+              ;; ones.
+              (setenv "USE_SYSTEM_LIBS" "1")
+              ;; For oneDNN
+              (setenv "USE_MKLDNN" "1")
+              ;; Only works with CUPTI
+              (setenv "USE_KINETO" "0")
+              ;; Prevent CMake error by disabling explicitely
+              (setenv "USE_ITT" "0")
+              ;; Disable on unsupported systems
+              (if #$(not (member
+                          (or (%current-target-system)
+                              (%current-system))
+                          (package-transitive-supported-systems qnnpack)))
+                  (setenv "USE_QNNPACK" "0")
+                  (setenv "USE_PYTORCH_QNNPACK" "0"))))
+          ;; PyTorch is still built with AVX2 and AVX-512 support selected at
+          ;; runtime, but these dependencies require it (nnpack only for
+          ;; x86_64).
+          (add-before 'build 'disable-avx-dependencies
+            (lambda _
+              (setenv "USE_FBGEMM" "0")
+              (if #$(not
+                     (member (or (%current-target-system)
+                                 (%current-system))
+                             '("armhf-linux" "aarch64-linux")))
+                  (setenv "USE_NNPACK" "0"))))
+          (add-after 'use-system-libraries 'set-max-jobs
+            (lambda _
+              (setenv "MAX_JOBS" (number->string (parallel-job-count)))))
+          (add-after 'set-max-jobs 'codegen1
+            (lambda _
+              (with-directory-excursion "torch/csrc/jit/tensorexpr"
+                (setenv "PYTHONPATH" "../../../..")
+                (invoke "python3" "codegen_external.py")
+                (setenv "PYTHONPATH" #f))
+
+              (invoke "python3" "aten/src/ATen/nnapi/codegen.py")
+
+              (invoke "bash" "tools/gen_flatbuffers.sh")
+
+              ;; Generate dummy files as the generation depends on the compiled
+              ;; library. They are regenerated later.
+              (setenv "PYTHONPATH" ".")
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py"
+                      "dummy")
+              (setenv "PYTHONPATH" #f)
+
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py"
+                      "dummy")
+
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py"
+                      "dummy")))
+          ;; Properly generate autogenerated files ...
+          (add-after 'install 'codegen2
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (add-installed-pythonpath inputs outputs)
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py")
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py")
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py")))
+          ;; ... rebuild their dependencies ...
+          (add-after 'codegen2 'build2
+            (lambda _
+              (invoke "python3" "setup.py" "build")))
+          ;; ... and install again.
+          (add-after 'build2 'install2
+            (lambda _
+              (invoke "python3" "setup.py" "install" (string-append "--prefix=" #$output)
+                      "--no-compile" "--single-version-externally-managed" "--root=/")
+              (invoke "python" "-m" "compileall"
+                      "--invalidation-mode=unchecked-hash" #$output)))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Run the test suite following the instructions in
+              ;; 'CONTRIBUTING.md'. Unfortunately this doesn't work, unless
+              ;; you set PYTHONPATH or GUIX_PYTHONPATH, but this is done in
+              ;; the codegen2 phase already.
+              (when tests?
+                (invoke "python3" "test/run_test.py" "--core"))))
+          (add-after 'install2 'remove-test-executables
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Remove test executables, but keep other executables
+              ;; such as 'torch_shm_manager' and and .so files such as
+              ;; 'libtorch_global_deps.so'.
+              (let ((python-site (site-packages inputs outputs)))
+                (for-each delete-file
+                          (find-files python-site
+                                      "(^test_cpp_rpc|_test)$")))))
+          (add-after 'install2 'remove-caffe2-onnx-scripts
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (bin (string-append out "/bin")))
+                ;; Remove 'convert-caffe2-to-onnx' and
+                ;; 'convert-onnx-to-caffe2': they seem to be
+                ;; deprecated and they cause a failure of the
+                ;; 'sanity-check' phase:
+                ;;
+                ;; ImportError: cannot import name 'metanet_pb2' from
+                ;; partially initialized module 'caffe2.proto' (most likely
+                ;; due to a circular import)
+                (for-each delete-file
+                          (find-files bin "^convert-.*caffe2"))
+
+                (substitute* (find-files out "^entry_points\\.txt$")
+                  (("^convert-.*" all)
+                   (string-append "# " all "\n")))))))
+
+      ;; Even only the core tests take a very long time to run.
+      #:tests? #f))
     (native-inputs
-     (list cmake ninja))
+     (list cmake
+           doxygen
+           ideep-pytorch
+           ninja
+           pocketfft-cpp
+           python-expecttest
+           python-pytest-flakefinder
+           python-pytest-rerunfailures-13
+           python-pytest-shard
+           python-pytest-xdist
+           python-hypothesis
+           python-types-dataclasses
+           python-typing-extensions-4.10
+           shaderc
+           valgrind))
     (inputs
-     (list eigen
-           ;; ("fmt" ,fmt)
-           fp16
-           gemmlowp
-           googletest
-           googlebenchmark
-           gloo
-           nnpack
-           openblas
-           openmpi
-           pthreadpool
-           protobuf
-           pybind11
-           sleef
-           xnnpack
-           zstd))
+     (append
+      (list asmjit
+            clog
+            eigen
+            ffmpeg
+            flatbuffers-next
+            fmt
+            foxi
+            fp16
+            fxdiv
+            gemmlowp
+            gloo
+            googletest
+            googlebenchmark
+            libuv
+            miniz-for-pytorch
+            openblas
+            opencv
+            openmpi
+            pthreadpool
+            protobuf
+            pybind11
+            sleef
+            tensorpipe
+            vulkan-headers
+            vulkan-loader
+            vulkan-memory-allocator
+            zstd)
+      ;; TODO: fix build on 32 bit systems once Rust is available.
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list oneapi-dnnl
+             qnnpack
+             qnnpack-pytorch
+             xnnpack))
+      ;; nnpack requires AVX2 for x86_64-linux
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 '("armhf-linux" "aarch64-linux")))
+       (list nnpack))))
     (propagated-inputs
-     (list python-astunparse
-           python-click
-           python-numpy
-           python-pyyaml
-           python-cffi
-           python-typing-extensions
-           python-future
-           python-six
-           python-requests
-           onnx                             ;propagated for its Python modules
-           onnx-optimizer
-           cpuinfo))
+     (append
+      (list onnx ;propagated for its Python modules
+            onnx-optimizer
+            python-astunparse
+            python-click
+            python-filelock
+            python-fsspec
+            python-future
+            python-jinja2
+            python-networkx
+            python-numpy
+            python-optree
+            python-packaging
+            python-psutil
+            python-pyyaml
+            python-requests
+            python-sympy
+            python-typing-extensions)
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list cpuinfo))))
     (home-page "https://pytorch.org/")
     (synopsis "Python library for tensor computation and deep neural networks")
     (description
diff --git a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch b/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
deleted file mode 100644
index 76c06520f0..0000000000
--- a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 5d57b9ca78..620cca4e60 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -644,11 +644,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1485,7 +1480,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 50ebb224ce..5953d9ddf7 100644
---- a/caffe2/CMakeLists.txt
-+++ b/caffe2/CMakeLists.txt
-@@ -1632,7 +1632,7 @@ if(BUILD_TEST)
-         if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
-           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
-           if(USE_FBGEMM)
-             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
-           endif()
-@@ -1655,7 +1655,7 @@ if(BUILD_TEST)
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1673,7 +1673,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       cuda_add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1691,7 +1691,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1709,7 +1709,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
-
-diff --git a/torch/lib/c10d/test/CMakeLists.txt b/torch/lib/c10d/test/CMakeLists.txt
-index b74d4b65f7..fc7c207505 100644
---- a/torch/lib/c10d/test/CMakeLists.txt
-+++ b/torch/lib/c10d/test/CMakeLists.txt
-@@ -16,24 +16,24 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp c10d gtest_main)
--c10d_add_test(TCPStoreTest.cpp c10d gtest_main)
-+c10d_add_test(FileStoreTest.cpp c10d gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp c10d gtest_main gtest)
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp c10d gtest_main)
-+  c10d_add_test(HashStoreTest.cpp c10d gtest_main gtest)
- endif()
- 
- if(USE_CUDA)
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main)
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main gtest)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_C10D_NCCL)
--    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main gtest)
-     c10d_add_test(ProcessGroupNCCLErrorsTest.cpp c10d c10d_cuda_test
--        gtest_main)
-+        gtest_main gtest)
-   endif()
- else()
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main gtest)
-   endif()
- endif()
-
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cbb5..6075bdd0a4 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
diff --git a/gnu/packages/patches/python-pytorch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-fix-codegen.patch
new file mode 100644
index 0000000000..cb246b25de
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index bc69b05162..0f8df81de3 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -20,9 +20,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -62,7 +67,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index dab1568580..55c58715fc 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = dict(sorted_version_map_)
+ 
+@@ -378,7 +383,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ 
+ def main() -> None:
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-runpath.patch b/gnu/packages/patches/python-pytorch-runpath.patch
index 7f95b88a2b..2c1724cdb0 100644
--- a/gnu/packages/patches/python-pytorch-runpath.patch
+++ b/gnu/packages/patches/python-pytorch-runpath.patch
@@ -3,10 +3,10 @@ get installed, quite surprisingly, to 'lib/python3.8/site-packages/{bin,lib}'.
 Make sure RUNPATH matches that.
 
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 5b5622f0..30d27e57 100644
+index 74836372..c8eb69d1 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1909,7 +1909,7 @@ if(BUILD_PYTHON)
+@@ -1910,7 +1910,7 @@ if(BUILD_PYTHON)
    if(${BUILDING_WITH_TORCH_LIBS})
      # site-packages/caffe2/python/caffe2_pybind11_state
      # site-packages/torch/lib
@@ -16,7 +16,7 @@ index 5b5622f0..30d27e57 100644
  
    # Must also include `CMAKE_SHARED_LINKER_FLAGS` in linker flags for
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index ee9cf410..f190e69b 100644
+index acc95842..8f8fb7d7 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
 @@ -4,7 +4,7 @@ if(APPLE)
@@ -28,3 +28,16 @@ index ee9cf410..f190e69b 100644
  endif(APPLE)
  # Use separate rpaths during build and install phases
  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
+diff --git a/functorch/CMakeLists.txt b/functorch/CMakeLists.txt
+index f2f32745..db21b656 100644
+--- a/functorch/CMakeLists.txt
++++ b/functorch/CMakeLists.txt
+@@ -21,7 +21,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE pybind::pybind11)
+ 
+ set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+       ${CMAKE_BINARY_DIR}/functorch)
+-set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${_rpath_portable_origin}/../torch/lib")
++set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../torch/lib")
+ 
+ # Copy-pasted prefix/suffix logic for Python extensions from
+ # https://github.com/pytorch/pytorch/blob/33bb8ae350611760139457b85842b1d7edf9aa11/caffe2/CMakeLists.txt#L1975
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
index fd849fd9e2..99f999f32f 100644
--- a/gnu/packages/patches/python-pytorch-system-libraries.patch
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -1,38 +1,104 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
 
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 2c2b967..5ac5fa6 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -371,9 +371,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x|ppc64le)$")
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index d57d7ebb..5b5622f0 100644
+index 7483637..093de40 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1736,7 +1736,7 @@ if(BUILD_TEST)
+@@ -111,9 +111,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -1055,7 +1052,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1396,6 +1392,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ if(USE_MPI)
+   target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX)
+ endif()
+@@ -1653,7 +1650,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1680,7 +1677,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1701,7 +1698,7 @@ if(BUILD_TEST)
          if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
            # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
 -          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
 +          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
            if(USE_FBGEMM)
              target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
            endif()
-@@ -1759,7 +1759,7 @@ if(BUILD_TEST)
+@@ -1715,7 +1712,7 @@ if(BUILD_TEST)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1732,7 +1729,7 @@ if(BUILD_TEST)
    foreach(test_src ${Caffe2_CPU_TEST_SRCS})
      get_filename_component(test_name ${test_src} NAME_WE)
      add_executable(${test_name} "${test_src}")
 -    target_link_libraries(${test_name} torch_library gtest_main)
 +    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     if(USE_OPENMP)
-       # -fopenmp is a compile time flag and as result not guaranteed
-       # to link executable against OpenMP runtime library
-@@ -1785,7 +1785,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1803,7 +1803,7 @@ if(BUILD_TEST)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1795,7 +1792,7 @@ if(BUILD_TEST)
      foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
        get_filename_component(test_name ${test_src} NAME_WE)
        add_executable(${test_name} "${test_src}")
@@ -41,20 +107,66 @@ index d57d7ebb..5b5622f0 100644
        target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
        target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
        add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1821,7 +1821,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
+index acc9584..97275bf 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+@@ -283,7 +283,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -489,19 +489,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -550,13 +537,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -728,11 +708,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
    # this shouldn't be necessary anymore.
    get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
    set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
@@ -66,7 +178,49 @@ index 557ab649..ee9cf410 100644
  
    # We will not need to test benchmark lib itself.
    set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+@@ -810,16 +785,6 @@ if(USE_FBGEMM)
+     if(USE_ASAN)
+       set(USE_SANITIZER "address,undefined" CACHE STRING "-fsanitize options for FBGEMM")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -979,7 +944,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1362,7 +1327,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1529,7 +1493,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1560,7 +1523,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
      endif()
      set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
      message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
@@ -75,8 +229,36 @@ index 557ab649..ee9cf410 100644
    endif()
    include_directories(${FOXI_INCLUDE_DIRS})
    list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1739,9 +1702,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1796,7 +1758,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1805,7 +1767,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
 diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
+index 9d5f064..c3624e5 100644
 --- a/cmake/External/nnpack.cmake
 +++ b/cmake/External/nnpack.cmake
 @@ -40,7 +40,7 @@ endif()
@@ -88,7 +270,7 @@ index a41343cb..6075bdd0 100644
    message(STATUS "Brace yourself, we are building NNPACK")
    set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
  
-@@ -114,6 +114,5 @@ endif()
+@@ -112,6 +112,5 @@ endif()
  # (4) Catch-all: not supported.
  ##############################################################################
  
@@ -97,8 +279,45 @@ index a41343cb..6075bdd0 100644
 -set(USE_NNPACK OFF)
 +set(NNPACK_FOUND TRUE)
 +set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 8793562..9f8fa3d 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,4 +15,4 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+diff --git a/setup.py b/setup.py
+index 81f3c6c..3251cab 100644
+--- a/setup.py
++++ b/setup.py
+@@ -482,13 +482,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         "tools/shared/_utils_internal.py",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h",
+     ]
+     orig_files = [
+         "torch/_utils_internal.py",
+-        "third_party/valgrind-headers/callgrind.h",
+-        "third_party/valgrind-headers/valgrind.h",
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
 diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
+index 5c89748..ef84c57 100644
 --- a/test/cpp/c10d/CMakeLists.txt
 +++ b/test/cpp/c10d/CMakeLists.txt
 @@ -16,14 +16,14 @@ function(c10d_add_test test_src)
@@ -133,7 +352,29 @@ index bf91460c..ef56948f 100644
    endif()
    if(USE_NCCL AND USE_C10D_NCCL)
      # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
    endif()
  else()
    if(USE_GLOO AND USE_C10D_GLOO)
@@ -143,10 +384,10 @@ index bf91460c..ef56948f 100644
  endif()
  
 diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
+index 012471d..d39b625 100644
 --- a/test/cpp/tensorexpr/CMakeLists.txt
 +++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
  # pthreadpool header. For some build environment we need add the dependency
  # explicitly.
  if(USE_PTHREADPOOL)
@@ -154,4 +395,4 @@ index 8fc5a0a1..643202f6 100644
 +  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
  endif()
  if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
+   target_compile_definitions(test_tensorexpr PRIVATE USE_CUDA)
diff --git a/gnu/packages/patches/python-pytorch-without-kineto.patch b/gnu/packages/patches/python-pytorch-without-kineto.patch
new file mode 100644
index 0000000000..f956316866
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-without-kineto.patch
@@ -0,0 +1,60 @@
+Even when building without Kineto, the <ActivityType.h> header is still
+imported and the ActivityType type is used. This patch was copied from
+https://github.com/pytorch/pytorch/pull/111048.
+
+diff --git a/torch/csrc/profiler/kineto_shim.h b/torch/csrc/profiler/kineto_shim.h
+index e92cbf00..68985ab7 100644
+--- a/torch/csrc/profiler/kineto_shim.h
++++ b/torch/csrc/profiler/kineto_shim.h
+@@ -12,7 +12,51 @@
+ #undef USE_KINETO
+ #endif
+ 
++#ifdef USE_KINETO
+ #include <ActivityType.h>
++#else
++namespace libkineto {
++// copied from header
++/*
++ * Copyright (c) Meta Platforms, Inc. and affiliates.
++ * All rights reserved.
++ *
++ * This source code is licensed under the BSD-style license found in the
++ * LICENSE file in the root directory of this source tree.
++ */
++
++// Note : All activity types are not enabled by default. Please add them
++// at correct position in the enum
++enum class ActivityType {
++    // Activity types enabled by default
++    CPU_OP = 0, // cpu side ops
++    USER_ANNOTATION,
++    GPU_USER_ANNOTATION,
++    GPU_MEMCPY,
++    GPU_MEMSET,
++    CONCURRENT_KERNEL, // on-device kernels
++    EXTERNAL_CORRELATION,
++    CUDA_RUNTIME, // host side cuda runtime events
++    CUDA_DRIVER, // host side cuda driver events
++    CPU_INSTANT_EVENT, // host side point-like events
++    PYTHON_FUNCTION,
++    OVERHEAD, // CUPTI induced overhead events sampled from its overhead API.
++
++    // Optional Activity types
++    CUDA_SYNC, // synchronization events between runtime and kernels
++    GLOW_RUNTIME, // host side glow runtime events
++    MTIA_RUNTIME, // host side MTIA runtime events
++    CUDA_PROFILER_RANGE, // CUPTI Profiler range for performance metrics
++    MTIA_CCP_EVENTS, // MTIA ondevice CCP events
++    HPU_OP, // HPU host side runtime event
++    XPU_RUNTIME, // host side xpu runtime events
++
++    ENUM_COUNT, // This is to add buffer and not used for any profiling logic. Add your new type before it.
++    OPTIONAL_ACTIVITY_TYPE_START = CUDA_SYNC,
++};
++}
++
++#endif
+ 
+ #include <torch/csrc/Export.h>
+ #include <torch/csrc/profiler/api.h>
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 27/32] gnu: Add python-pytorch-avx.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (25 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
                       ` (5 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-pytorch-avx): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index a062a2398b..ea023ad749 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4712,6 +4712,21 @@ (define-public python-pytorch
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
+;; This package variant includes the dependencies requiring at least AVX2 or
+;; AVX-512.
+(define-public python-pytorch-avx
+  (package/inherit python-pytorch
+    (name "python-pytorch-avx")
+    (inputs
+     (modify-inputs (package-inputs python-pytorch)
+       (append fbgemm nnpack)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-pytorch)
+      ((#:phases phases)
+       #~(modify-phases #$phases
+           (delete 'disable-avx-dependencies)))))
+    (supported-systems '("x86_64-linux"))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 28/32] gnu: python-torchvision: Update to 0.17.1.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (26 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 27/32] gnu: Add python-pytorch-avx David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
                       ` (4 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-torchvision): Update to 0.17.1.
[source]: Add snippet to remove "android" and "ios" directories.
---
 gnu/packages/machine-learning.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ea023ad749..c816b202e2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5178,7 +5178,7 @@ (define-public python-torchmetrics
 (define-public python-torchvision
   (package
     (name "python-torchvision")
-    (version "0.15.2")
+    (version "0.17.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5188,7 +5188,12 @@ (define-public python-torchvision
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cq2s13vkgg9rljjbrm4g33yxq7q5zqp7f4xm5cq624gvs0wxmi8"))))
+                "094jz0ryzh0yjxf687r61r482fdh3bax8ix2csghraps0z1sns1b"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "android")
+                  (delete-file-recursively "ios")))))
     (build-system pyproject-build-system)
     (arguments
      (list #:tests? #false)) ;the test suite is expensive and there is no easy
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 29/32] gnu: Add ideep-pytorch-for-r-torch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (27 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
                       ` (3 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c816b202e2..939e798f45 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4315,6 +4315,21 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define-public ideep-pytorch-for-r-torch
+  (package
+    (inherit ideep-pytorch)
+    (version "2.7.3-1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name (package-name ideep-pytorch) version))
+       (sha256
+        (base32
+         "0hdpkhcjry22fjx2zg2r48v7f4ljrclzj0li2pgk76kvyblfbyvm"))))))
+
 (define %python-pytorch-version "2.2.1")
 
 (define %python-pytorch-src
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 30/32] gnu: Add oneapi-dnnl-for-r-torch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (28 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
                       ` (2 subsequent siblings)
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 939e798f45..d600e601b9 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5893,6 +5893,20 @@ (define-public oneapi-dnnl
     (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
+(define-public oneapi-dnnl-for-r-torch
+  (package
+    (inherit oneapi-dnnl)
+    (version "2.7.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oneapi-src/oneDNN")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name oneapi-dnnl) version))
+       (sha256
+        (base32 "1zyw5rd8x346bb7gac9a7x3saviw3zvp6aqz2z1l9sv163vmjfz6"))))))
+
 (define-public python-gguf
   (package
     (name "python-gguf")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 31/32] gnu: Add qnnpack-pytorch-for-r-torch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (29 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-version): New
variable.
(%python-pytorch-for-r-torch-src): New variable.
(qnnpack-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index d600e601b9..caca1dcf89 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4742,6 +4742,34 @@ (define-public python-pytorch-avx
            (delete 'disable-avx-dependencies)))))
     (supported-systems '("x86_64-linux"))))
 
+(define %python-pytorch-for-r-torch-version "2.0.1")
+
+(define %python-pytorch-for-r-torch-src
+  (origin
+    (inherit %python-pytorch-src)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-for-r-torch-version))))
+    (file-name (git-file-name "python-pytorch"
+                              %python-pytorch-for-r-torch-version))
+    (sha256
+     (base32
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+
+(define-public qnnpack-pytorch-for-r-torch
+  (package
+    (inherit qnnpack-pytorch)
+    (version (string-append "pytorch-" %python-pytorch-for-r-torch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-for-r-torch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        (origin-snippet (package-source qnnpack-pytorch)))))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v3 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (30 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
@ 2024-03-20 22:38     ` David Elsing
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
  32 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-20 22:38 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-src): Add
patches.
(python-pytorch-for-r-torch)[version]: Use
%python-pytorch-for-r-torch-version.
[source]: Use %python-pytorch-for-r-torch-src.
[native-inputs]: Use 'modify-inputs'.
[inputs]: Don't replace xnnpack. Replace qnnpack-pytorch with
qnnpack-pytorch-for-r-torch and oneapi-dnnl with oneapi-dnnl-for-r-torch.
[propagated-inputs]: Don't replace onnx and onnx-optimizer.
* gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen: New file.
* gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch: New file.
* gnu/packages/patches/python-pytorch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/machine-learning.scm             |  61 +--
 ...thon-pytorch-for-r-torch-fix-codegen.patch | 167 ++++++++
 ...pytorch-for-r-torch-system-libraries.patch | 399 ++++++++++++++++++
 .../python-pytorch2-system-libraries.patch    | 156 -------
 5 files changed, 586 insertions(+), 198 deletions(-)
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c7dfe1b873..a9fae2052d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1813,7 +1813,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyreadstat-link-libiconv.patch	\
   %D%/packages/patches/python-pyls-black-41.patch		\
   %D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch	\
-  %D%/packages/patches/python-pytorch2-system-libraries.patch	\
   %D%/packages/patches/python-sip-include-dirs.patch	\
   %D%/packages/patches/python-sgmllib3k-assertions.patch	\
   %D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index caca1dcf89..081e2cff08 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4754,7 +4754,15 @@ (define %python-pytorch-for-r-torch-src
                               %python-pytorch-for-r-torch-version))
     (sha256
      (base32
-      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))
+    (patches (search-patches
+              "python-pytorch-for-r-torch-system-libraries.patch"
+              "python-pytorch-runpath.patch"
+              "python-pytorch-without-kineto.patch"
+              ;; Some autogeneration scripts depend on the
+              ;; compile PyTorch library. Therefore, we create
+              ;; dummy versions which are regenerated later.
+              "python-pytorch-for-r-torch-fix-codegen.patch"))))
 
 (define-public qnnpack-pytorch-for-r-torch
   (package
@@ -4770,56 +4778,27 @@ (define-public qnnpack-pytorch-for-r-torch
        (snippet
         (origin-snippet (package-source qnnpack-pytorch)))))))
 
+;; Keep in sync with r-torch
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
     (name "python-pytorch")
-    (version "2.0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14m7v54zyd2qg2xk9mqdpbf4ps7091mdzinzh4vq9p5k4bpznj65"))
-              (patches (search-patches "python-pytorch2-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "caffe2/CMakeLists.txt"
-                    (("target_link_libraries\\(\\$\\{test_name\\}_\\$\\{CPU_CAPABILITY\\} c10 sleef gtest_main\\)")
-                     "target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest gtest_main)"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-for-r-torch-version)
+    (source %python-pytorch-for-r-torch-src)
+    (native-inputs
+     (modify-inputs (package-native-inputs python-pytorch)
+       (replace "ideep-pytorch" ideep-pytorch-for-r-torch)))
+    (inputs
+     (modify-inputs (package-inputs python-pytorch)
+       (replace "qnnpack-pytorch" qnnpack-pytorch-for-r-torch)
+       (replace "oneapi-dnnl" oneapi-dnnl-for-r-torch)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
                python-jinja2
                python-networkx
                python-opt-einsum
-               python-sympy)
-       (replace "onnx" onnx-for-torch2)
-       (replace "onnx-optimizer" onnx-optimizer-for-torch2)))))
+               python-sympy)))))
 
 (define-public python-pytorch-geometric
   (package
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
new file mode 100644
index 0000000000..8515e5ab13
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index 120520b139..0c8587f02d 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -16,9 +16,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -48,7 +53,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index e5287cffc5..57f3c38096 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = {name: lst for name, lst in sorted_version_map_}
+ 
+@@ -379,7 +384,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ def main() -> None:
+ 
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
new file mode 100644
index 0000000000..e5d647f70d
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
@@ -0,0 +1,399 @@
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
+
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 96fc297..7f27b66 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -362,9 +362,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
+ 
+diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
+index 221e3f3..417f601 100644
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -110,9 +110,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -975,7 +972,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1314,6 +1310,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ target_include_directories(torch_cpu INTERFACE $<INSTALL_INTERFACE:include>)
+ target_include_directories(torch_cpu PRIVATE ${Caffe2_CPU_INCLUDE})
+ target_include_directories(torch_cpu SYSTEM PRIVATE "${Caffe2_DEPENDENCY_INCLUDE}")
+@@ -1570,7 +1567,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1601,7 +1598,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1622,13 +1619,13 @@ if(BUILD_TEST)
+         if(NOT MSVC)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
+           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
+           if(USE_FBGEMM)
+             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1645,7 +1642,7 @@ if(BUILD_TEST)
+   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1703,7 +1700,7 @@ if(BUILD_TEST)
+     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
+       get_filename_component(test_name ${test_src} NAME_WE)
+       add_executable(${test_name} "${test_src}")
+-      target_link_libraries(${test_name} torch_library gtest_main)
++      target_link_libraries(${test_name} torch_library gtest_main gtest)
+       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 8c0e3c2..d65576a 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -298,7 +298,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -501,19 +501,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -562,13 +549,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -750,11 +730,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+   # this shouldn't be necessary anymore.
+   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
+-  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
+-
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
+ 
+   # We will not need to test benchmark lib itself.
+   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
+@@ -829,16 +804,6 @@ if(USE_FBGEMM)
+     else()
+       set(FBGEMM_LIBRARY_TYPE "static" CACHE STRING "")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -1001,7 +966,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1395,7 +1360,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1551,7 +1515,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1582,7 +1545,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+     endif()
+     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
+     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
+-    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
++    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
+   endif()
+   include_directories(${FOXI_INCLUDE_DIRS})
+   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1752,9 +1715,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1819,7 +1781,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1828,7 +1790,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
+diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
+index a41343c..6075bdd 100644
+--- a/cmake/External/nnpack.cmake
++++ b/cmake/External/nnpack.cmake
+@@ -40,7 +40,7 @@ endif()
+ # (3) Android, iOS, Linux, macOS - supported
+ ##############################################################################
+ 
+-if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
++if(FALSE)
+   message(STATUS "Brace yourself, we are building NNPACK")
+   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
+ 
+@@ -114,6 +114,5 @@ endif()
+ # (4) Catch-all: not supported.
+ ##############################################################################
+ 
+-message(WARNING "Unknown platform - I don't know how to build NNPACK. "
+-                "See cmake/External/nnpack.cmake for details.")
+-set(USE_NNPACK OFF)
++set(NNPACK_FOUND TRUE)
++set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 50404d3..ca067f0 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,7 +15,7 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+ if(BUILD_ONEDNN_GRAPH)
+   if(NOT TARGET caffe2::dnnl_graph)
+     add_library(caffe2::dnnl_graph INTERFACE IMPORTED)
+diff --git a/setup.py b/setup.py
+index 34b2854..5db117f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -418,13 +418,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         'tools/shared/_utils_internal.py',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h',
+     ]
+     orig_files = [
+         'torch/_utils_internal.py',
+-        'third_party/valgrind-headers/callgrind.h',
+-        'third_party/valgrind-headers/valgrind.h',
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
+diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
+index 89c6b91..0c60d08 100644
+--- a/test/cpp/c10d/CMakeLists.txt
++++ b/test/cpp/c10d/CMakeLists.txt
+@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
+   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ endfunction()
+ 
+-c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
+-c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
++c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
++c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
+ if(INSTALL_TEST)
+   install(TARGETS FileStoreTest DESTINATION bin)
+   install(TARGETS TCPStoreTest DESTINATION bin)
+ endif()
+ if(NOT WIN32)
+-  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
++  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
+   if(INSTALL_TEST)
+     install(TARGETS HashStoreTest DESTINATION bin)
+   endif()
+@@ -31,11 +31,11 @@ endif()
+ 
+ if(USE_CUDA)
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
+     endif()
+-    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+   endif()
+   if(USE_NCCL AND USE_C10D_NCCL)
+     # NCCL is a private dependency of libtorch, but the tests include some
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
+   endif()
+ else()
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
+   endif()
+ endif()
+ 
+diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
+index 7dff706..90b1003 100644
+--- a/test/cpp/tensorexpr/CMakeLists.txt
++++ b/test/cpp/tensorexpr/CMakeLists.txt
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+ # pthreadpool header. For some build environment we need add the dependency
+ # explicitly.
+ if(USE_PTHREADPOOL)
+-  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
++  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
+ endif()
+ if(USE_CUDA)
+   target_link_libraries(test_tensorexpr PRIVATE
diff --git a/gnu/packages/patches/python-pytorch2-system-libraries.patch b/gnu/packages/patches/python-pytorch2-system-libraries.patch
deleted file mode 100644
index c2c44badbb..0000000000
--- a/gnu/packages/patches/python-pytorch2-system-libraries.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
---- a/caffe2/CMakeLists.txt	2023-12-27 12:14:24.308751288 +0100
-+++ b/caffe2/CMakeLists.txt	2023-12-27 12:30:15.941562126 +0100
-@@ -1570,7 +1570,7 @@
-   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
-   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
-   target_link_libraries(static_runtime_bench torch_library benchmark)
--  target_link_libraries(static_runtime_test torch_library gtest_main)
-+  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
- endif()
- 
- if(BUILD_TENSOREXPR_BENCHMARK)
-@@ -1601,7 +1601,7 @@
-   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
-@@ -1628,7 +1628,7 @@
-           endif()
-         else()
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
-         endif()
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-@@ -1645,7 +1645,7 @@
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1666,7 +1666,7 @@
-     foreach(test_src ${Caffe2_MPS_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
-diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
---- a/test/cpp/c10d/CMakeLists.txt
-+++ b/test/cpp/c10d/CMakeLists.txt
-@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
--c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
-+c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
- if(INSTALL_TEST)
-   install(TARGETS FileStoreTest DESTINATION bin)
-   install(TARGETS TCPStoreTest DESTINATION bin)
- endif()
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
-+  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
-   if(INSTALL_TEST)
-     install(TARGETS HashStoreTest DESTINATION bin)
-   endif()
-@@ -31,11 +31,11 @@ endif()
- 
- if(USE_CUDA)
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-     if(INSTALL_TEST)
-       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
-     endif()
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_NCCL AND USE_C10D_NCCL)
-     # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
-   endif()
- else()
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
-   endif()
- endif()
- 
-diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
---- a/test/cpp/tensorexpr/CMakeLists.txt
-+++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
- # pthreadpool header. For some build environment we need add the dependency
- # explicitly.
- if(USE_PTHREADPOOL)
--  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
-+  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
- endif()
- if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch
  2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
                       ` (31 preceding siblings ...)
  2024-03-20 22:38     ` [bug#69591] [PATCH v3 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
@ 2024-03-23 21:40     ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
                         ` (31 more replies)
  32 siblings, 32 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 21:40 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This is a rebase to master, where the python-pytorch2 package was added. I
removed it again, as this patch series updates the python-pytorch package to
version 2.
I also added the python-opt-einsum package to the propagated inputs like
Ricardo did in the python-pytorch2 package, as I had missed it before.

David Elsing (32):
  gnu: asmjit: Update to commit 3ca5c18.
  gnu: Add python-typing-extensions-4.10.
  gnu: Add python-optree.
  gnu: Add python-pytest-flakefinder.
  gnu: Add python-pytest-shard.
  gnu: Add python-expecttest.
  gnu: Add python-pytest-rerunfailures-13.
  gnu: Add miniz.
  gnu: Add miniz-for-pytorch.
  gnu: Add libnop.
  gnu: Remove flatbuffers-next-shared.
  gnu: python-flatbuffers-next: Update to 23.5.26.
  gnu: pthreadpool: Update to commit 178e3e0.
  gnu: cpuinfo: Update to commit aa4b216.
  gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  gnu: nnpack: Update to commit 70a77f4.
  gnu: oneapi-dnnl: Update to 3.3.5.
  gnu: Add tensorpipe.
  gnu: Add fbgemm.
  gnu: Add qnnpack.
  gnu: Add foxi.
  gnu: Add ideep-pytorch.
  gnu: xnnpack: Update to commit 51a9875.
  gnu: Remove xnnpack-for-torch2.
  gnu: Add qnnpack-pytorch.
  gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  gnu: Add python-pytorch-avx.
  gnu: python-torchvision: Update to 0.17.1.
  gnu: Add ideep-pytorch-for-r-torch.
  gnu: Add oneapi-dnnl-for-r-torch.
  gnu: Add qnnpack-pytorch-for-r-torch.
  gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.

 gnu/local.mk                                  |   10 +-
 gnu/packages/compression.scm                  |   50 +
 gnu/packages/cpp.scm                          |    6 +-
 gnu/packages/machine-learning.scm             | 1014 ++--
 gnu/packages/parallel.scm                     |   34 +-
 .../patches/clog-fix-shared-build.patch       |   39 +-
 .../patches/cpuinfo-system-libraries.patch    |   50 -
 .../patches/fbgemm-use-system-libraries.patch |   62 +
 gnu/packages/patches/foxi-fix-build.patch     |   55 +
 gnu/packages/patches/miniz-for-pytorch.patch  |   47 +
 .../patches/python-optree-fix-32-bit.patch    |  122 +
 ...ython-pytorch-1.9.0-system-libraries.patch |  139 -
 .../patches/python-pytorch-fix-codegen.patch  |  167 +
 ...thon-pytorch-for-r-torch-fix-codegen.patch |  167 +
 ...pytorch-for-r-torch-system-libraries.patch |  399 ++
 .../patches/python-pytorch-runpath.patch      |   19 +-
 .../python-pytorch-system-libraries.patch     |  317 +-
 .../python-pytorch-without-kineto.patch       |   60 +
 .../python-pytorch2-system-libraries.patch    |  156 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------
 .../patches/xnnpack-remove-broken-tests.patch |  337 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 gnu/packages/python-build.scm                 |   14 +-
 gnu/packages/python-check.scm                 |   89 +
 gnu/packages/python-xyz.scm                   |   30 +
 gnu/packages/serialization.scm                |   54 +-
 26 files changed, 5207 insertions(+), 5023 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

-- 
2.41.0





^ permalink raw reply	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 01/32] gnu: asmjit: Update to commit 3ca5c18.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
                         ` (30 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/cpp.scm (asmjit): Update to commit 3ca5c18.
---
 gnu/packages/cpp.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index d451eea2fd..78c3a195a6 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -154,8 +154,8 @@ (define-public argagg
       (license license:expat))))
 
 (define-public asmjit
-  (let ((commit "4ec760a3d1f69e32ba460ecd2513f29b8428700b")
-        (revision "0"))
+  (let ((commit "3ca5c186bf8922e5fe3018432e93651fd2fa4053")
+        (revision "1"))
     (package
       (name "asmjit")
       (version (git-version "0.0.0" revision commit))
@@ -168,7 +168,7 @@ (define-public asmjit
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0skgccbpamcbg1byawfq5n6jzxgj64hnc7jznvk35nkskaaz1nlb"))))
+          (base32 "10k1zc0w8m0vnh52id9qlm1sb99qmpvr6k0ha8ag2h223n0d591g"))))
       (build-system cmake-build-system)
       (arguments
        (list #:configure-flags #~(list "-DASMJIT_TEST=TRUE")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 02/32] gnu: Add python-typing-extensions-4.10.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 03/32] gnu: Add python-optree David Elsing
                         ` (29 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-build.scm (python-typing-extensions-4.10): New variable.
---
 gnu/packages/python-build.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 2ea457cdba..dfd59d5e25 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2022 Garek Dyszel <garekdyszel@disroot.org>
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
-
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -252,6 +252,18 @@ (define-public python-typing-extensions
 @end enumerate\n")
     (license license:psfl)))
 
+(define-public python-typing-extensions-4.10
+  (package
+    (inherit python-typing-extensions)
+    (version "4.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "typing_extensions" version))
+       (sha256
+        (base32
+         "1jxkj4pni8pdyrn79sq441lsp40xzw363n0qvfc6zfcgkv4dgaxh"))))))
+
 \f
 ;;;
 ;;; Python builder packages.
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 03/32] gnu: Add python-optree.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 04/32] gnu: Add python-pytest-flakefinder David Elsing
                         ` (28 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-xyz.scm (python-optree): New variable.
---
 .../patches/python-optree-fix-32-bit.patch    | 122 ++++++++++++++++++
 gnu/packages/python-xyz.scm                   |  30 +++++
 2 files changed, 152 insertions(+)
 create mode 100644 gnu/packages/patches/python-optree-fix-32-bit.patch

diff --git a/gnu/packages/patches/python-optree-fix-32-bit.patch b/gnu/packages/patches/python-optree-fix-32-bit.patch
new file mode 100644
index 0000000000..6a32c39bd8
--- /dev/null
+++ b/gnu/packages/patches/python-optree-fix-32-bit.patch
@@ -0,0 +1,122 @@
+In include/utils.h, ssize_t is an alias for py::ssize_t, which is an alias for
+Py_ssize_t in Python, which is an alias for the system ssize_t.
+The latter is defined in glibc as int if __WORDSIZE == 32 and as long int if
+__WORDSIZE == 64.  Therefore, we need to remove the explicit template
+specialization for int in the first case.
+
+diff --git a/include/utils.h b/include/utils.h
+index 950a02b..82a9591 100644
+--- a/include/utils.h
++++ b/include/utils.h
+@@ -141,10 +141,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const size_t& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::tuple>(const py::handle& container, const int& item) {
+     return PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const ssize_t& item) {
+     return PyList_GET_ITEM(container.ptr(), item);
+@@ -153,10 +155,12 @@ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const size_t& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::handle GET_ITEM_HANDLE<py::list>(const py::handle& container, const int& item) {
+     return PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_BORROW(const py::handle& container, const Item& item) {
+@@ -171,11 +175,13 @@ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_borrow<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -185,11 +191,13 @@ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const s
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_BORROW<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_borrow<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline py::object GET_ITEM_STEAL(const py::handle& container, const Item& item) {
+@@ -204,11 +212,13 @@ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const s
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::tuple>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyTuple_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const ssize_t& item) {
+     return py::reinterpret_steal<py::object>(PyList_GET_ITEM(container.ptr(), item));
+@@ -218,11 +228,13 @@ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const si
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline py::object GET_ITEM_STEAL<py::list>(const py::handle& container, const int& item) {
+     return py::reinterpret_steal<py::object>(
+         PyList_GET_ITEM(container.ptr(), py::ssize_t_cast(item)));
+ }
++#endif
+ 
+ template <typename Container, typename Item>
+ inline void SET_ITEM(const py::handle& container, const Item& item, const py::handle& value) {
+@@ -240,12 +252,14 @@ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::tuple>(const py::handle& container,
+                                 const int& item,
+                                 const py::handle& value) {
+     PyTuple_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const ssize_t& item,
+@@ -258,12 +272,14 @@ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#if __WORDSIZE != 32
+ template <>
+ inline void SET_ITEM<py::list>(const py::handle& container,
+                                const int& item,
+                                const py::handle& value) {
+     PyList_SET_ITEM(container.ptr(), py::ssize_t_cast(item), value.inc_ref().ptr());
+ }
++#endif
+ 
+ template <typename PyType>
+ inline void AssertExact(const py::handle& object) {
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index aad89d251e..5357c94b8c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -150,6 +150,7 @@
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Ian Eure <ian@retrospec.tv>
 ;;; Copyright © 2024 Adriel Dumas--Jondeau <leirda@disroot.org>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -11741,6 +11742,35 @@ (define-public python-treelib
      "This package provides a Python implementation of a tree structure.")
     (license license:asl2.0)))
 
+(define-public python-optree
+  (package
+    (name "python-optree")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/metaopt/optree")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1q3wljk7cyl5rsam02sfsj8zjrqx4c3x9vic8j6xx13p8czpsisg"))
+       (patches (search-patches "python-optree-fix-32-bit.patch"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-typing-extensions))
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-pytest-xdist
+           cmake
+           pybind11))
+    (home-page "https://github.com/metaopt/optree")
+    (synopsis "Optimized PyTree Utilities")
+    (description "This package contains operations on PyTrees (a tree made of
+container data structures in Python).")
+    (license license:asl2.0)))
+
 (define-public python-jupyter-core
   (package
     (name "python-jupyter-core")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 04/32] gnu: Add python-pytest-flakefinder.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (2 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 03/32] gnu: Add python-optree David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 05/32] gnu: Add python-pytest-shard David Elsing
                         ` (27 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-flakefinder): New variable.
---
 gnu/packages/python-check.scm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 51a38bbcbe..247f8af98b 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
 ;;; Copyright © 2022 jgart <jgart@dismail.de>
 ;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,6 +192,24 @@ (define-public python-pytest-csv
 it adds to the Pytest command line interface (CLI).")
     (license license:gpl3+)))
 
+(define-public python-pytest-flakefinder
+  (package
+    (name "python-pytest-flakefinder")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flakefinder" version))
+       (sha256
+        (base32 "03iy80xlkpgzjs2kxa9rrj8dbnp9awyhpcl3hy8fgf5x40cjlhg2"))))
+    (build-system pyproject-build-system)
+    (propagated-inputs (list python-pytest))
+    (home-page "https://github.com/dropbox/pytest-flakefinder")
+    (synopsis "Pytest plugin for finding flaky tests")
+    (description "This package provides a Pytest plugin to run tests multiple
+times and detect flakyness.")
+    (license license:asl2.0)))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 05/32] gnu: Add python-pytest-shard.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (3 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 04/32] gnu: Add python-pytest-flakefinder David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 06/32] gnu: Add python-expecttest David Elsing
                         ` (26 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-shard): New variable.
---
 gnu/packages/python-check.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 247f8af98b..f876088488 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -210,6 +210,30 @@ (define-public python-pytest-flakefinder
 times and detect flakyness.")
     (license license:asl2.0)))
 
+(define-public python-pytest-shard
+  (let ((commit "64610a08dac6b0511b6d51cf895d0e1040d162ad")
+        (revision "0"))
+    (package
+      (name "python-pytest-shard")
+      (version (git-version "0.1.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/AdamGleave/pytest-shard")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1h31m68igz670bzl307hazjrfbr8pk14mxflllar18ydmlrnl677"))))
+      (build-system pyproject-build-system)
+      (propagated-inputs (list python-pytest))
+      (home-page "https://github.com/AdamGleave/pytest-shard")
+      (synopsis "Pytest plugin for sharding tests")
+      (description "This package provides a Pytest extension for sharding
+tests at the granularity of individual test cases, which can be run in
+parallel and on multiple machines.")
+      (license license:expat))))
+
 (define-public python-testfixtures
   (package
     (name "python-testfixtures")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 06/32] gnu: Add python-expecttest.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (4 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 05/32] gnu: Add python-pytest-shard David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
                         ` (25 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-expecttest): New variable.
---
 gnu/packages/python-check.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index f876088488..dbca80652c 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2078,6 +2078,41 @@ (define-public python-eradicate
 valid Python syntax that are likely to be commented out code.")
     (license license:expat)))
 
+(define-public python-expecttest
+  (let ((commit "683b09a352cc426851adc2e3a9f46e0ab25e4dee")
+        (revision "0"))
+    (package
+      (name "python-expecttest")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ezyang/expecttest")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1djwxp9x1hczzxbimv1b1bmd083am88v27l82nmlkhvzyg2cmpvv"))))
+      (build-system pyproject-build-system)
+      (arguments
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  ;; The test runs tests expected to fail, so the output is
+                  ;; confusing
+                  (invoke "python3" "test_expecttest.py")))))))
+      (native-inputs (list python-hypothesis poetry))
+      (home-page "https://github.com/ezyang/expecttest")
+      (synopsis "Python module for expect tests")
+      (description "@code{expecttest} is a Python module for expect tests, where
+the initial expected value of a test can be automatically set by running the
+test itself.")
+      (license license:expat))))
+
 (define-public python-robber
   (package
     (name "python-robber")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 07/32] gnu: Add python-pytest-rerunfailures-13.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (5 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 06/32] gnu: Add python-expecttest David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 08/32] gnu: Add miniz David Elsing
                         ` (24 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/python-check.scm (python-pytest-rerunfailures-13): New variable.
---
 gnu/packages/python-check.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index dbca80652c..347e4a4701 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -2464,6 +2464,17 @@ (define-public python-pytest-rerunfailures
 eliminate flaky failures.")
     (license license:mpl2.0)))
 
+(define-public python-pytest-rerunfailures-13
+  (package
+    (inherit python-pytest-rerunfailures)
+    (version "13.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-rerunfailures" version))
+       (sha256
+        (base32 "16cin0chv59w4rvnd6r0fisp0s8avmp07rwn9da6yixw43jdncp1"))))))
+
 (define-public python-xunitparser
   (package
     (name "python-xunitparser")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 08/32] gnu: Add miniz.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (6 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 09/32] gnu: Add miniz-for-pytorch David Elsing
                         ` (23 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz): New variable.
---
 gnu/packages/compression.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 5de17b6b51..fcfc2c30f3 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2838,3 +2839,31 @@ (define-public unrar-free
 libarchive.  It does not rival the non-free @code{unrar} in terms of features,
 but special care has been taken to ensure it meets most user's needs.")
     (license license:gpl2+)))
+
+(define-public miniz
+  (package
+    (name "miniz")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0672q35vjrpakmsr1gwj9k5fwv5ihzhahm19bq4y74wqpn91p7fw"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON")
+      ;; No tests
+      #:tests? #f))
+    (home-page "https://github.com/richgel999/miniz")
+    (synopsis "Independent implementation of zlib and Deflate compression")
+    (description "Miniz is a lossless data compression library that implements
+the zlib (RFC 1950) and Deflate (RFC 1951) compressed data format
+specification standards.  It supports the most commonly used functions
+exported by the zlib library.")
+    (license license:expat)))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 09/32] gnu: Add miniz-for-pytorch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (7 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 08/32] gnu: Add miniz David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 10/32] gnu: Add libnop David Elsing
                         ` (22 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/compression.scm (miniz-for-pytorch): New variable.
* gnu/packages/patches/miniz-for-pytorch.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                 |  1 +
 gnu/packages/compression.scm                 | 21 +++++++++
 gnu/packages/patches/miniz-for-pytorch.patch | 47 ++++++++++++++++++++
 3 files changed, 69 insertions(+)
 create mode 100644 gnu/packages/patches/miniz-for-pytorch.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7f1006010b..ca83a84ea2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1691,6 +1691,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mingw-w64-reproducible-gendef.patch	\
   %D%/packages/patches/minisat-friend-declaration.patch		\
   %D%/packages/patches/minisat-install.patch			\
+  %D%/packages/patches/miniz-for-pytorch.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
   %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index fcfc2c30f3..589c9bb834 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2867,3 +2867,24 @@ (define-public miniz
 specification standards.  It supports the most commonly used functions
 exported by the zlib library.")
     (license license:expat)))
+
+(define-public miniz-for-pytorch
+  (package
+    (inherit miniz)
+    (version "pytorch-2.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/richgel999/miniz")
+                    (commit "2.2.0")))
+              (file-name (git-file-name (package-name miniz) version))
+              (sha256
+               (base32
+                "09j9ihigfsavgcmk8l36zmbjvdf1x1w7h2v4rkww1qk1sb43y5zf"))
+              (patches (search-patches "miniz-for-pytorch.patch"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments miniz)
+       ((#:configure-flags flags '())
+        ;; The changes break the examples.
+        `(cons "-DBUILD_EXAMPLES=OFF" ,flags))))
+    (properties '((hidden? . #t)))))
diff --git a/gnu/packages/patches/miniz-for-pytorch.patch b/gnu/packages/patches/miniz-for-pytorch.patch
new file mode 100644
index 0000000000..19fa705a31
--- /dev/null
+++ b/gnu/packages/patches/miniz-for-pytorch.patch
@@ -0,0 +1,47 @@
+Modifications from the internal fork of the python-pytorch package.
+
+diff --git a/miniz.h b/miniz.h
+index 42e1ea2..5869ab9 100644
+--- a/miniz.h
++++ b/miniz.h
+@@ -123,7 +123,7 @@
+ /* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */
+ /* get/set file times, and the C run-time funcs that get/set times won't be called. */
+ /* The current downside is the times written to your archives will be from 1979. */
+-/*#define MINIZ_NO_TIME */
++#define MINIZ_NO_TIME
+ 
+ /* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */
+ /*#define MINIZ_NO_ARCHIVE_APIS */
+@@ -135,7 +135,7 @@
+ /*#define MINIZ_NO_ZLIB_APIS */
+ 
+ /* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */
+-/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */
++#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+ 
+ /* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. 
+    Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc
+@@ -172,8 +172,7 @@
+ #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
+ #if MINIZ_X86_OR_X64_CPU
+ /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
+-#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
+-#define MINIZ_UNALIGNED_USE_MEMCPY
++#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #else
+ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+ #endif
+diff --git a/miniz_zip.h b/miniz_zip.h
+index 82502bd..3d92255 100644
+--- a/miniz_zip.h
++++ b/miniz_zip.h
+@@ -150,7 +150,7 @@ typedef enum {
+     MZ_ZIP_TOTAL_ERRORS
+ } mz_zip_error;
+ 
+-typedef struct
++typedef struct mz_zip_archive
+ {
+     mz_uint64 m_archive_size;
+     mz_uint64 m_central_directory_file_ofs;
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 10/32] gnu: Add libnop.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (8 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 09/32] gnu: Add miniz-for-pytorch David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 11/32] gnu: Remove flatbuffers-next-shared David Elsing
                         ` (21 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (libnop): New variable.
---
 gnu/packages/serialization.scm | 39 ++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 331fae80cf..bfee0dbfc6 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -19,6 +19,7 @@
 ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2024 Paul A. Patience <paul@apatience.com>
 ;;; Copyright © 2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -936,3 +937,41 @@ (define-public python-feather-format
     (description "This package provides a Python wrapper library to the
 Apache Arrow-based Feather binary columnar serialization data frame format.")
     (license license:asl2.0)))
+
+(define-public libnop
+  (let ((commit "35e800d81f28c632956c5a592e3cbe8085ecd430")
+        (revision "0"))
+    (package
+      (name "libnop")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/libnop")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0qqbaljq54qiq0dky9nj47igfcs065ry526jg9a0aafbfl9krpy2"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:test-target "test"
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (invoke "out/test"))))
+            (replace 'install
+              (lambda _
+                (copy-recursively
+                 "include" (string-append #$output "/include")))))))
+      (native-inputs (list googletest))
+      (home-page "https://github.com/google/libnop")
+      (synopsis "C++ Native Object Protocols")
+      (description "@code{libnop} is a header-only library for serializing and
+deserializing C++ data types without external code generators or runtime
+support libraries.")
+      (license license:asl2.0))))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 11/32] gnu: Remove flatbuffers-next-shared.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (9 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 10/32] gnu: Add libnop David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
                         ` (20 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (flatbuffers-next-shared): Delete variable.
* gnu/packages/machine-learning.scm (tensorflow-lite)[arguments]: Use
flatbuffers-next instead of flatbuffers-next-shared.
---
 gnu/packages/machine-learning.scm |  5 +++--
 gnu/packages/serialization.scm    | 11 -----------
 2 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 003be7e3c6..c6aa394fbc 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2024 David Pflug <david@pflug.io>
 ;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
 ;;; Copyright © 2024 Spencer King <spencer.king@geneoscopy.com>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3337,7 +3338,7 @@ (define-public tensorflow-lite
          (string-append "-DEigen3_DIR=" #$(this-package-input "eigen")
                         "/share/eigen3/cmake")
          (string-append "-DFlatBuffers_DIR="
-                        #$(this-package-input "flatbuffers-shared")
+                        #$(this-package-input "flatbuffers")
                         "/lib/cmake/flatbuffers")
          (string-append "-DNEON_2_SSE_DIR=" #$(this-package-input "neon2sse")
                         "/lib/cmake/NEON_2_SSE")
@@ -3424,7 +3425,7 @@ (define-public tensorflow-lite
        ("cpuinfo" ,cpuinfo)
        ("eigen" ,eigen)
        ("fp16" ,fp16)
-       ("flatbuffers-shared" ,flatbuffers-next-shared)
+       ("flatbuffers" ,flatbuffers-next)
        ("gemmlowp" ,gemmlowp)
        ("mesa-headers" ,mesa-headers)
        ("neon2sse" ,neon2sse)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index bfee0dbfc6..405c4211da 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -890,17 +890,6 @@ (define-public flatbuffers-next
                (base32
                 "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
 
-(define-public flatbuffers-next-shared
-  (package
-    (inherit flatbuffers-next)
-    (name "flatbuffers-shared")
-    (version "23.1.21")
-    (arguments
-     (substitute-keyword-arguments (package-arguments flatbuffers-next)
-       ((#:configure-flags  flags)
-        ;; Compile with -fPIC, needed for shared lib.
-        #~(cons "-DFLATBUFFERS_CXX_FLAGS=-fPIC" #$flags))))))
-
 (define-public python-flatbuffers
   (package
     (name "python-flatbuffers")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 12/32] gnu: python-flatbuffers-next: Update to 23.5.26.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (10 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 11/32] gnu: Remove flatbuffers-next-shared David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
                         ` (19 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/serialization.scm (python-flatbuffers-next): Update to 23.5.26.
---
 gnu/packages/serialization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 405c4211da..bea96f2a92 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -879,7 +879,7 @@ (define-public flatbuffers
 (define-public flatbuffers-next
   (package
     (inherit flatbuffers)
-    (version "23.1.21")
+    (version "23.5.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -888,7 +888,7 @@ (define-public flatbuffers-next
               (file-name (git-file-name "flatbuffers" version))
               (sha256
                (base32
-                "1z3a6l8g2y53i5xzraswfs2i0i3kk52zv7nzc2q3fgisbyiri3pz"))))))
+                "0cd12dvkzqdafz46q4302mzgpzbz589zmmiga7bq07f2sqy4vrvv"))))))
 
 (define-public python-flatbuffers
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 13/32] gnu: pthreadpool: Update to commit 178e3e0.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (11 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
                         ` (18 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (pthreadpool): Update to commit 178e3e0.
---
 gnu/packages/parallel.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index ddf4ad016b..e1cbe52934 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -449,9 +450,9 @@ (define-public python-slurm-magic
 (define-public pthreadpool
   ;; This repository has only one tag, 0.1, which is older than what users
   ;; such as XNNPACK expect.
-  (let ((commit "1787867f6183f056420e532eec640cba25efafea")
+  (let ((commit "178e3e0646cc671708bf78e77c273940130ac637")
         (version "0.1")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "pthreadpool")
       (version (git-version version revision commit))
@@ -462,7 +463,7 @@ (define-public pthreadpool
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02hdvxfn5krw8zivkgjx3b4rk9p02yr4mpdjlp75lsv6z1xf5yrx"))
+                  "1s86lnq9bahacf5wxn7y14w70jh3g9lq1l7y16ijwhifd01nc2km"))
                 (patches (search-patches "pthreadpool-system-libraries.patch"))))
       (build-system cmake-build-system)
       (arguments '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 14/32] gnu: cpuinfo: Update to commit aa4b216.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (12 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
                         ` (17 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (cpuinfo): Update to commit aa4b216.
[arguments]: Set the "-DUSE_SYSTEM_LIBS=ON" configure flag instead of using a
patch.
[supported-systems]: New field.
* gnu/packages/patches/cpuinfo-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |  1 -
 gnu/packages/parallel.scm                     | 14 ++++--
 .../patches/cpuinfo-system-libraries.patch    | 50 -------------------
 3 files changed, 9 insertions(+), 56 deletions(-)
 delete mode 100644 gnu/packages/patches/cpuinfo-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index ca83a84ea2..474260b764 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1068,7 +1068,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cool-retro-term-wctype.patch		\
   %D%/packages/patches/coreutils-gnulib-tests.patch		\
   %D%/packages/patches/cppcheck-disable-char-signedness-test.patch	\
-  %D%/packages/patches/cpuinfo-system-libraries.patch		\
   %D%/packages/patches/cpulimit-with-glib-2.32.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crc32c-unbundle-googletest.patch		\
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index e1cbe52934..4238312367 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -480,8 +480,8 @@ (define-public pthreadpool
 (define-public cpuinfo
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (revision "2")
-        (commit "53298db833c5c5a1598639e9b47cc1a602bbac26"))
+        (revision "3")
+        (commit "aa4b2163b99ac9534194520f70b93eeefb0b3b4e"))
     (package
       (name "cpuinfo")
       (version (git-version version revision commit))
@@ -492,12 +492,13 @@ (define-public cpuinfo
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "01kfgxya2w32dz9bd3qm3i2d6nffw0qfyql11rxl7d3g830brj5k"))
-                (patches (search-patches "cpuinfo-system-libraries.patch"))))
+                  "12x4krkyzxngf1l2ck33lnsp8pyzf6gyjj9mp9cnka9mw3h6617m"))))
       (build-system cmake-build-system)
       (arguments
        (list
-        #:configure-flags '(list "-DBUILD_SHARED_LIBS=ON")
+        #:configure-flags
+        '(list "-DBUILD_SHARED_LIBS=ON"
+               "-DUSE_SYSTEM_LIBS=ON")
         #:phases
         '(modify-phases %standard-phases
            (add-after 'unpack 'skip-bad-test
@@ -513,6 +514,9 @@ (define-public cpuinfo
        "The cpuinfo library provides a C/C++ and a command-line interface to
 obtain information about the CPU being used: supported instruction set,
 processor name, cache information, and topology information.")
+      ;; On aarch64-linux, there is a bug reported upstream:
+      ;; https://github.com/pytorch/cpuinfo/issues/14
+      (supported-systems '("armv7-linux" "i686-linux" "x86_64-linux"))
       (license license:bsd-2))))
 
 (define-public clog
diff --git a/gnu/packages/patches/cpuinfo-system-libraries.patch b/gnu/packages/patches/cpuinfo-system-libraries.patch
deleted file mode 100644
index e25446e9da..0000000000
--- a/gnu/packages/patches/cpuinfo-system-libraries.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57abc26..761c612 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -93,7 +93,7 @@ SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
- 
- IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -105,7 +105,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
- ENDIF()
- 
- IF(CPUINFO_BUILD_BENCHMARKS)
--  IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
-+  IF(FALSE)
-     MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
-     CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
-     EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
-@@ -271,14 +271,6 @@ INSTALL(TARGETS cpuinfo
- 
- # ---[ cpuinfo micro-benchmarks
- IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
--  # ---[ Build google benchmark
--  IF(NOT TARGET benchmark)
--    SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "")
--    ADD_SUBDIRECTORY(
--      "${GOOGLEBENCHMARK_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark")
--  ENDIF()
--
-   IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$")
-     ADD_EXECUTABLE(get-current-bench bench/get-current.cc)
-     TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark)
-@@ -289,7 +281,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
- ENDIF()
- 
- IF(CPUINFO_SUPPORTED_PLATFORM)
--  IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
-+  IF(FALSE)
-     # ---[ Build google test
-     IF(NOT TARGET gtest)
-       IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (13 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
                         ` (16 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/parallel.scm (clog)[arguments]: Add "-DUSE_SYSTEM_LIBS=ON"
to #:configure-flags.
* gnu/packages/patches/clog-fix-shared-build.patch: Adjust patch.
---
 gnu/packages/parallel.scm                     | 13 ++++---
 .../patches/clog-fix-shared-build.patch       | 39 ++-----------------
 2 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 4238312367..f591834047 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -527,11 +527,14 @@ (define-public clog
               (inherit (package-source cpuinfo))
               (patches (search-patches "clog-fix-shared-build.patch"))))
     (arguments
-     (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON")
-           #:phases #~(modify-phases %standard-phases
-                        (add-after 'unpack 'chdir
-                          (lambda _
-                            (chdir "deps/clog"))))))
+     (list
+      #:configure-flags
+      ''("-DBUILD_SHARED_LIBS=ON"
+         "-DUSE_SYSTEM_LIBS=ON")
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'chdir
+                     (lambda _
+                       (chdir "deps/clog"))))))
     (native-inputs (list googletest))
     (inputs '())
     (synopsis "C-style logging library based on printf")
diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch
index bf80544b90..eb305339f5 100644
--- a/gnu/packages/patches/clog-fix-shared-build.patch
+++ b/gnu/packages/patches/clog-fix-shared-build.patch
@@ -1,50 +1,19 @@
 Author: Antero Mejr <antero@mailbox.org>
-Notes: Disabled function visibility hacks and googletest download. Enabled
-non-static builds.
+Notes: Disabled function visibility hacks. Enabled non-static builds.
 
 diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt
-index 083f519..b7b225a 100644
+index 6e50c41..db02e95 100644
 --- a/deps/clog/CMakeLists.txt
 +++ b/deps/clog/CMakeLists.txt
-@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
- SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
-   CACHE PATH "Confu-style dependencies binary directory")
+@@ -55,7 +55,7 @@ IF(CLOG_BUILD_TESTS)
+ ENDIF()
  
--IF(CLOG_BUILD_TESTS)
--  IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
--    MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
--    CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
--      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
--    SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
--  ENDIF()
--ENDIF()
--
  # ---[ clog library
 -ADD_LIBRARY(clog STATIC src/clog.c)
 +ADD_LIBRARY(clog src/clog.c)
  SET_TARGET_PROPERTIES(clog PROPERTIES
    C_STANDARD 99
    C_EXTENSIONS NO)
-@@ -74,16 +62,6 @@ INSTALL(TARGETS clog
- 
- # ---[ clog tests
- IF(CLOG_BUILD_TESTS)
--  # ---[ Build google test
--  IF(NOT TARGET gtest)
--    IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
--      SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
--    ENDIF()
--    ADD_SUBDIRECTORY(
--      "${GOOGLETEST_SOURCE_DIR}"
--      "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
--  ENDIF()
--
-   ADD_EXECUTABLE(clog-test test/clog.cc)
-   SET_TARGET_PROPERTIES(clog-test PROPERTIES
-     CXX_STANDARD 11
 diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h
 index 4143761..aa9000f 100644
 --- a/deps/clog/include/clog.h
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 16/32] gnu: nnpack: Update to commit 70a77f4.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (14 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
                         ` (15 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (nnpack): Update to commit 70a77f4.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index c6aa394fbc..1bb008b38f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3973,10 +3973,11 @@ (define-public python-umap-learn
 also for general non-linear dimension reduction.")
     (license license:bsd-3)))
 
+;; Requires AVX2 on x86_64-linux.
 (define-public nnpack
   (let ((version "0.0")
-        (commit "c07e3a0400713d546e0dea2d5466dd22ea389c73")
-        (revision "1"))
+        (commit "70a77f485e8b934224f3a79efd8edcd84cd377b8")
+        (revision "2"))
     (package
       (name "nnpack")
       (version (git-version version revision commit))
@@ -3987,19 +3988,11 @@ (define-public nnpack
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0s0kk3a35w3yzf0q447p72350sbsh4qhg6vm3y2djbj4xpg7jc8v"))
+                  "0c4pw926279s3rlx7mg4l4vhnfy6dh374n6w7zqhcn0bxpym1hv1"))
                 (patches (search-patches "nnpack-system-libraries.patch"))))
       (build-system cmake-build-system)
-      ;; XXX: The test suite runs but it's very expensive, and on x86_64 CPUs
-      ;; that lack the right ISA extensions, tests fail with:
-      ;;
-      ;; Expected equality of these values:
-      ;;   nnp_status_success
-      ;;     Which is: 0
-      ;;   status
-      ;;     Which is: 51
-      ;;
-      ;; where 51 is 'nnp_status_unsupported_hardware'.
+      ;; XXX: The test suite runs but it's very expensive. On x86_64-linux, it
+      ;; requires AVX2 instructions.
       (arguments '(#:tests? #f))
       (synopsis "Acceleration package for neural network computations")
       (description
@@ -4020,6 +4013,8 @@ (define-public nnpack
              googletest))
       (native-inputs
        (list python python-peachpy python-six))
+      ;; Supported for Linux.
+      (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
 (define-public xnnpack
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 17/32] gnu: oneapi-dnnl: Update to 3.3.5.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (15 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 18/32] gnu: Add tensorpipe David Elsing
                         ` (14 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl): Update to 3.3.5.
[supported-systems]: New field.
---
 gnu/packages/machine-learning.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 1bb008b38f..a254a0c7f2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5424,7 +5424,7 @@ (define-public python-brian2tools
 (define-public oneapi-dnnl
   (package
     (name "oneapi-dnnl")
-    (version "3.1")
+    (version "3.3.5")
     (source
      (origin
        (method git-fetch)
@@ -5433,7 +5433,7 @@ (define-public oneapi-dnnl
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jgmb5kl0bf4a2zfn94zlb117672r9lvvkkmwl86ihlyr1mpr3d0"))))
+        (base32 "05ra5zziys2hvn29y6ysiqzsf4jr9bf2bci5sc3swvf3bs2y5ihf"))))
     (build-system cmake-build-system)
     (arguments (if (target-riscv64?)
                    (list #:configure-flags #~'("-DDNNL_CPU_RUNTIME=SEQ"))
@@ -5443,6 +5443,7 @@ (define-public oneapi-dnnl
     (description
      "OneAPI Deep Neural Network Library (oneDNN) is a cross-platform
 performance library of basic building blocks for deep learning applications.")
+    (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
 (define-public python-gguf
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 18/32] gnu: Add tensorpipe.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (16 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 19/32] gnu: Add fbgemm David Elsing
                         ` (13 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (tensorpipe): New variable.
---
 gnu/packages/machine-learning.scm | 36 +++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index a254a0c7f2..b104800b71 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -91,6 +91,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jupyter)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -4093,6 +4094,41 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+(define-public tensorpipe
+  (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
+        (revision "0"))
+    (package
+      (name "tensorpipe")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pytorch/tensorpipe")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0sbpkd69rzybw2j89sjkf4s0j8vkk96d51bsps28894989a75j6v"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(delete-file-recursively "third_party"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        #:configure-flags
+        ''("-DBUILD_SHARED_LIBS=ON")
+        ;; There are no tests
+        #:tests? #f))
+      (inputs (list libuv))
+      (native-inputs (list googletest pkg-config pybind11 libnop))
+      (home-page "https://github.com/pytorch/tensorpipe")
+      (synopsis "Tensor-aware point-to-point communication primitive for
+machine learning")
+      (description "TensorPipe provides a tensor-aware channel to transfer
+rich objects from one process to another while using the fastest transport for
+the tensors contained therein.")
+      (license license:bsd-3))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 19/32] gnu: Add fbgemm.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (17 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 18/32] gnu: Add tensorpipe David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 20/32] gnu: Add qnnpack David Elsing
                         ` (12 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (fbgemm): New variable.
* gnu/packages/patches/fbgemm-use-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/machine-learning.scm             | 34 ++++++++++
 .../patches/fbgemm-use-system-libraries.patch | 62 +++++++++++++++++++
 3 files changed, 97 insertions(+)
 create mode 100644 gnu/packages/patches/fbgemm-use-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 474260b764..e0fa9e1f78 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1175,6 +1175,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spUtils.patch			\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
+  %D%/packages/patches/fbgemm-use-system-libraries.patch	\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
   %D%/packages/patches/fbreader-fix-icon.patch		\
   %D%/packages/patches/fenics-dolfin-algorithm.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b104800b71..b478723939 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4094,6 +4094,40 @@ (define-public xnnpack-for-torch2
                                  "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                                  "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
 
+;; Warning: This package requires AVX2 or AVX-512 instructions.
+(define-public fbgemm
+  (package
+    (name "fbgemm")
+    (version "0.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pytorch/fbgemm")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0mw30v55aicqdbh3xwfj9p8f38nw70ks5cxiwpgwjsk0dylah9rf"))
+              (patches (search-patches "fbgemm-use-system-libraries.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(delete-file-recursively "third_party"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags
+      ''("-DFBGEMM_LIBRARY_TYPE=shared")
+      ;; Tests require AVX2 or AVX-512 instructions
+      #:tests? #f))
+    (inputs (list asmjit cpuinfo))
+    (native-inputs (list pkg-config python googletest))
+    (home-page "https://github.com/pytorch/fbgemm")
+    (synopsis "Facebook GEneral Matrix Multiplication")
+    (description "Low-precision, high-performance matrix-matrix
+multiplications and convolution library for server-side inference.")
+    (supported-systems '("x86_64-linux"))
+    (license license:bsd-3)))
+
 (define-public tensorpipe
   (let ((commit "bb1473a4b38b18268e8693044afdb8635bc8351b")
         (revision "0"))
diff --git a/gnu/packages/patches/fbgemm-use-system-libraries.patch b/gnu/packages/patches/fbgemm-use-system-libraries.patch
new file mode 100644
index 0000000000..456bc3021c
--- /dev/null
+++ b/gnu/packages/patches/fbgemm-use-system-libraries.patch
@@ -0,0 +1,62 @@
+Use the asmjit and cpuinfo packages.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 134523e..b88b0e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -235,7 +235,7 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}")
+ message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}")
+ message(WARNING "==========")
+ 
+-if(NOT TARGET asmjit)
++if(FALSE)
+   #Download asmjit from github if ASMJIT_SRC_DIR is not specified.
+   if(NOT DEFINED ASMJIT_SRC_DIR)
+     set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/third_party/asmjit"
+@@ -264,7 +264,7 @@ if(NOT TARGET asmjit)
+   endif()
+ endif()
+ 
+-if(NOT TARGET cpuinfo)
++if(FALSE)
+   #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified.
+   if(NOT DEFINED CPUINFO_SOURCE_DIR)
+     set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/third_party/cpuinfo"
+@@ -340,9 +340,12 @@ target_include_directories(fbgemm BEFORE
+ target_link_libraries(fbgemm
+   $<BUILD_INTERFACE:asmjit>
+   $<BUILD_INTERFACE:cpuinfo>)
+-add_dependencies(fbgemm
+-  asmjit
+-  cpuinfo)
++
++find_package(asmjit)
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(libcpuinfo REQUIRED IMPORTED_TARGET libcpuinfo)
++
++target_link_libraries(fbgemm asmjit::asmjit PkgConfig::libcpuinfo)
+ 
+ if(OpenMP_FOUND)
+   target_link_libraries(fbgemm OpenMP::OpenMP_CXX)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 2cffddf..bd4d409 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -14,7 +14,7 @@ set(CMAKE_C_STANDARD 11)
+ set(CMAKE_C_EXTENSIONS OFF)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+ 
+-if(FBGEMM_BUILD_TESTS AND NOT TARGET gtest)
++if(FALSE)
+   #Download Googletest framework from github if
+   #GOOGLETEST_SOURCE_DIR is not specified.
+   if(NOT DEFINED GOOGLETEST_SOURCE_DIR)
+@@ -78,7 +78,7 @@ macro(add_gtest TESTNAME)
+     target_link_libraries(${TESTNAME} ${OpenMP_CXX_LIBRARIES})
+   endif()
+ 
+-  add_dependencies(${TESTNAME} gtest fbgemm)
++  add_dependencies(${TESTNAME} fbgemm)
+   add_test(${TESTNAME} ${TESTNAME})
+   set_target_properties(${TESTNAME} PROPERTIES FOLDER test)
+ endmacro()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 20/32] gnu: Add qnnpack.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (18 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 19/32] gnu: Add fbgemm David Elsing
@ 2024-03-23 22:04       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 21/32] gnu: Add foxi David Elsing
                         ` (11 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:04 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (qnnpack): New variable.
---
 gnu/packages/machine-learning.scm | 51 +++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index b478723939..1872ca9d30 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4018,6 +4018,57 @@ (define-public nnpack
       (supported-systems '("x86_64-linux" "armhf-linux" "aarch64-linux"))
       (license license:bsd-2))))
 
+(define-public qnnpack
+  (let ((commit "7d2a4e9931a82adc3814275b6219a03e24e36b4c")
+        (revision "0"))
+    (package
+      (name "qnnpack")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pytorch/qnnpack")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1dgzriiaz9arsrfwhx42y4l74wbzn6xvdmllfb66v4pmvi5gpxc5"))
+         (modules '((guix build utils)))
+         (snippet
+          '(delete-file-recursively "deps"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; The shared library build fails with linker errors, so we build the
+        ;; static library with -fPIC as in the bundled PyTorch version.
+        #:configure-flags
+        ''("-DQNNPACK_LIBRARY_TYPE=static"
+           "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("IF.*SOURCE_DIR.*")
+                   "IF(FALSE)\n")
+                  (("IF\\(NOT TARGET.*")
+                   "IF(FALSE)\n")
+                  (("TARGET_LINK_LIBRARIES.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(TARGET_LINK_LIBRARIES.*) fp16 (.*)" _ before after)
+                   (string-append before " " after))))))))
+      (inputs (list clog cpuinfo fp16 fxdiv psimd pthreadpool))
+      (native-inputs (list googletest googlebenchmark))
+      (home-page "https://github.com/pytorch/qnnpack")
+      (synopsis "Quantized Neural Network PACKage")
+      (description "QNNPACK is a library for low-precision neural network
+inference.  It contains the implementation of common neural network operators
+on quantized 8-bit tensors.")
+      (supported-systems
+       '("armv7-linux" "aarch64-linux" "i686-linux" "x86_64-linux"))
+      (license license:bsd-3))))
+
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 21/32] gnu: Add foxi.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (19 preceding siblings ...)
  2024-03-23 22:04       ` [bug#69591] [PATCH v4 20/32] gnu: Add qnnpack David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 22/32] gnu: Add ideep-pytorch David Elsing
                         ` (10 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (foxi): New variable.
* gnu/packages/patches/foxi-fix-build.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                              |  1 +
 gnu/packages/machine-learning.scm         | 29 ++++++++++++
 gnu/packages/patches/foxi-fix-build.patch | 55 +++++++++++++++++++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/foxi-fix-build.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e0fa9e1f78..15d9d50de7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1207,6 +1207,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
+  %D%/packages/patches/foxi-fix-build.patch			\
   %D%/packages/patches/fp16-implicit-double.patch		\
   %D%/packages/patches/fp16-system-libraries.patch		\
   %D%/packages/patches/fpc-reproducibility.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 1872ca9d30..5dc0a48b12 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4214,6 +4214,35 @@ (define-public tensorpipe
 the tensors contained therein.")
       (license license:bsd-3))))
 
+(define-public foxi
+  (let
+      ((commit "c278588e34e535f0bb8f00df3880d26928038cad")
+       (revision "0"))
+    (package
+      (name "foxi")
+      (version (git-version "1.4.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/houseroad/foxi")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0q3ssm5hmmvwfwx87mnnajbavzgpahybw6rpn8ysr9r095dwgq5a"))
+                (patches (search-patches "foxi-fix-build.patch"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list
+        ;; No tests
+        #:tests? #f))
+      (home-page "https://github.com/houseroad/foxi")
+      (synopsis "ONNXIFI with Facebook Extension")
+      (description "ONNX Interface for Framework Integration is a cross-platform
+API for loading and executing ONNX graphs on optimized backends.  This package
+contains facebook extensions and is used by PyTorch.")
+      (license license:expat))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
diff --git a/gnu/packages/patches/foxi-fix-build.patch b/gnu/packages/patches/foxi-fix-build.patch
new file mode 100644
index 0000000000..d82090ad38
--- /dev/null
+++ b/gnu/packages/patches/foxi-fix-build.patch
@@ -0,0 +1,55 @@
+Taken from https://github.com/houseroad/foxi/pull/25.
+
+diff --git a/foxi/onnxifi_dummy.c b/foxi/onnxifi_dummy.c
+index 2115af9..73e25fc 100644
+--- a/foxi/onnxifi_dummy.c
++++ b/foxi/onnxifi_dummy.c
+@@ -103,7 +103,10 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph) {
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader) {
++
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+   }
+@@ -215,6 +218,8 @@ ONNXIFI_PUBLIC ONNXIFI_CHECK_RESULT onnxStatus ONNXIFI_ABI
+ onnxWaitEventFor(onnxEvent event,
+                  uint32_t timeoutMs,
+                  onnxEventState* eventState,
+-                 onnxStatus* eventStatus) {
++		  onnxStatus* eventStatus,
++		  char* message,
++		  size_t* messageLength) {
+   return ONNXIFI_STATUS_SUCCESS;
+ }
+\ No newline at end of file
+diff --git a/foxi/onnxifi_wrapper.c b/foxi/onnxifi_wrapper.c
+index 98a9325..abe1440 100644
+--- a/foxi/onnxifi_wrapper.c
++++ b/foxi/onnxifi_wrapper.c
+@@ -761,7 +761,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     const void* onnxModel,
+     uint32_t weightsCount,
+     const onnxTensorDescriptorV1* weightDescriptors,
+-    onnxGraph* graph)
++    onnxGraph* graph,
++    uint32_t maxSeqLength,
++    void* deferredWeightReader)
+ {
+   if (graph == NULL) {
+     return ONNXIFI_STATUS_INVALID_POINTER;
+@@ -797,7 +799,9 @@ ONNXIFI_PUBLIC onnxStatus ONNXIFI_ABI onnxInitGraph(
+     onnxModel,
+     weightsCount,
+     weightDescriptors,
+-    &graph_wrapper->graph);
++    &graph_wrapper->graph,
++    maxSeqLength,
++    deferredWeightReader);
+   switch (status) {
+     case ONNXIFI_STATUS_SUCCESS:
+     case ONNXIFI_STATUS_FALLBACK:
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 22/32] gnu: Add ideep-pytorch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (20 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 21/32] gnu: Add foxi David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
                         ` (9 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5dc0a48b12..2aaa342a66 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -52,6 +52,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (guix download)
   #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system pyproject)
@@ -4243,6 +4244,31 @@ (define-public foxi
 contains facebook extensions and is used by PyTorch.")
       (license license:expat))))
 
+(define-public ideep-pytorch
+  (package
+    (name "ideep-pytorch")
+    (version "3.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0y6r938qryi3bnf15rp0fbilsfimdcgmvsa0ygwrn3zifw6386rb"))))
+    (build-system copy-build-system)
+    (arguments
+     (list
+      #:install-plan
+      ''(("include" "include"))))
+    (home-page "https://github.com/intel/ideep")
+    (synopsis "Ideep headers for interal use by PyTorch")
+    (description "This library is used internally as header-only library by
+PyTorch.")
+    (license license:expat)))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 23/32] gnu: xnnpack: Update to commit 51a9875.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (21 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 22/32] gnu: Add ideep-pytorch David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
                         ` (8 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

The tests which fail to build if building the shared library are removed by a
patch. Autogenerated files are removed by a snippet and generated in a
separate build phase.

* gnu/packages/machine-learning.scm (xnnpack): Update to commit 51a9875.
[source]: Add patch for tests. Add snippet to remove autogenerated files.
[arguments]: New modules and phase arguments.
[inputs]: Add clog and cpuinfo.
[native-inputs]: New field.
* gnu/packages/patches/xnnpack-remove-broken-tests.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/patches/xnnpack-system-libraries.patch: Update patch.
---
 gnu/local.mk                                  |    1 +
 gnu/packages/machine-learning.scm             |  110 +-
 .../patches/xnnpack-remove-broken-tests.patch |  337 ++
 .../patches/xnnpack-system-libraries.patch    | 4133 ++++++++++-------
 4 files changed, 2928 insertions(+), 1653 deletions(-)
 create mode 100644 gnu/packages/patches/xnnpack-remove-broken-tests.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 15d9d50de7..f6e1a45a38 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2205,6 +2205,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
+  %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
   %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 2aaa342a66..00cd3f88fd 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4073,41 +4073,110 @@ (define-public qnnpack
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (commit "ae108ef49aa5623b896fc93d4298c49d1750d9ba")
-        (revision "2"))
+        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
+        (revision "3"))
     (package
       (name "xnnpack")
       (version (git-version version revision commit))
       (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0q68q2jxiiiblx45q4337k13ppgh5vqjwrwznchcnpb8hawjj3zl"))
-                (patches (search-patches "xnnpack-system-libraries.patch"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url home-page) (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
+         ;; Some tests fail to link as they use internal symbols, which are
+         ;; not included in the shared library.
+         ;; XXX: Additionally, these tests fail on i686 due to incorrect results:
+         ;; 171 - f32-vlrelu-test (Failed)
+         ;; 211 - qs8-gavgpool-minmax-fp32-test (Failed)
+         ;; 224 - qu8-avgpool-minmax-fp32-test (Failed)
+         ;; 228 - qu8-gavgpool-minmax-fp32-test (Failed)
+         ;; 263 - x32-packx-test (Failed)
+         (patches (search-patches "xnnpack-remove-broken-tests.patch"))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (ice-9 textual-ports)
+                    (srfi srfi-26)))
+         (snippet
+          '(begin
+             ;; Remove autogenerated files
+             (for-each
+              (lambda (dir)
+                (let ((gendir (string-append "src/" dir "/gen")))
+                  (when (file-exists? gendir)
+                    (delete-file-recursively gendir)
+                    ;; Needed for the scripts generating the files
+                    (mkdir gendir))))
+              (scandir "src" (negate (cut member <> '("." "..")))))
+             (delete-file-recursively "google3")
+             (delete-file "cmake/microkernels.cmake")
+             ;; Additional autogenerated files which contain the string
+             ;; "Auto-generated file"
+             (for-each
+              (lambda (dir)
+                (for-each
+                 (lambda (name)
+                   (let ((path (string-append dir "/" name)))
+                     (when (call-with-input-file path
+                             (lambda (port)
+                               (string-contains
+                                (get-string-all port)
+                                "Auto-generated file")))
+                       (delete-file path))))
+                 (scandir dir (negate (cut member <> '("." ".."))))))
+              '("test" "bench" "eval" "models" "src/enums" "src/xnnpack"))))))
       (build-system cmake-build-system)
       (arguments
-       '(#:configure-flags '("-DXNNPACK_USE_SYSTEM_LIBS=YES"
+       (list
+        #:build-type "Release" ;; Debugging symbols require a lot of disk space
+        #:configure-flags ''("-DXNNPACK_USE_SYSTEM_LIBS=YES"
                              "-DBUILD_SHARED_LIBS=ON"
+                             "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
                              "-DXNNPACK_LIBRARY_TYPE=shared"
-                             "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
                              "-DXNNPACK_BUILD_BENCHMARKS=FALSE")
-
-         ;; FIXME: Building tests leads to a CMake error:
-         ;;
-         ;;   ADD_LIBRARY cannot create target "all_microkernels" because
-         ;;   another target with the same name already exists.
-         #:tests? #f))
+        #:modules '((ice-9 ftw)
+                    (guix build cmake-build-system)
+                    (guix build utils))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'fix-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("TARGET_INCLUDE_DIRECTORIES\\((pthreadpool|cpuinfo).*") "")
+                  ((".*IF\\(NOT TARGET gtest\\).*")
+                   "IF(FALSE)\n")
+                  (("SET\\(CMAKE_CXX_STANDARD 11\\)")
+                   "SET(CMAKE_CXX_STANDARD 14)")
+                  (("AMD64") "x86_64"))))
+            (add-after 'patch-source-shebangs 'generate-files
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (when (and (string-prefix? "generate" name)
+                              (string-suffix? ".sh" name)
+                              (not (equal? "generate-amalgamation.sh" name)))
+                     (display (string-append name "\n"))
+                     (invoke "bash" (string-append "scripts/" name))))
+                 (scandir "scripts"))
+                ;; These need to run after the above scripts
+                (display "Remaining files\n")
+                (invoke "python3" "tools/update-microkernels.py")
+                (substitute* "tools/amalgamate-microkernels.py"
+                  (("BUILD") "BUILD.bazel"))
+                (invoke "bash" "scripts/generate-amalgamation.sh"))))))
       (inputs
-       (list cpuinfo
+       (list clog
+             cpuinfo
              pthreadpool
              googletest
              googlebenchmark
              fxdiv
              fp16
              psimd))
+      (native-inputs (list python-pyyaml python-wrapper))
       (synopsis "Optimized floating-point neural network inference operators")
       (description
        "XNNPACK is a highly optimized library of floating-point neural network
@@ -4116,6 +4185,9 @@ (define-public xnnpack
 instead it provides low-level performance primitives for accelerating
 high-level machine learning frameworks, such as TensorFlow Lite,
 TensorFlow.js, PyTorch, and MediaPipe.")
+      (supported-systems
+       '("armv7-linux" "aarch64-linux" "riscv64-linux"
+         "i686-linux" "x86_64-linux" "i686-mingw" "x86_64-mingw"))
       (license license:bsd-3))))
 
 (define-public xnnpack-for-torch2
diff --git a/gnu/packages/patches/xnnpack-remove-broken-tests.patch b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
new file mode 100644
index 0000000000..91b7ca9998
--- /dev/null
+++ b/gnu/packages/patches/xnnpack-remove-broken-tests.patch
@@ -0,0 +1,337 @@
+These tests fail to build because we are building a shared library.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 95df99eae..ab57d5efa 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -978,16 +978,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+-    ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(argmax-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(argmax-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME argmax-pooling-nhwc-test COMMAND argmax-pooling-nhwc-test)
+-
+-    ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1066,11 +1056,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(copy-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME copy-nc-eager-test COMMAND copy-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+-
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-nchw2nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(depth-to-space-nchw2nhwc-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1116,11 +1101,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+-
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1146,11 +1126,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+-
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1191,11 +1166,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+-    ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+-    ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+-
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
+@@ -1312,16 +1282,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_LINK_LIBRARIES(fusion-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fusion-test COMMAND fusion-test)
+ 
+-    ADD_EXECUTABLE(memory-planner-test test/memory-planner-test.cc)
+-    TARGET_INCLUDE_DIRECTORIES(memory-planner-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(memory-planner-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME memory-planner-test COMMAND memory-planner-test)
+-
+-    ADD_EXECUTABLE(subgraph-fp16-test test/subgraph-fp16.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subgraph-fp16-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subgraph-fp16-test PRIVATE XNNPACK gtest gtest_main)
+-    ADD_TEST(NAME subgraph-fp16-test COMMAND subgraph-fp16-test)
+-
+     ADD_EXECUTABLE(subgraph-nchw-test test/subgraph-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(subgraph-nchw-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(subgraph-nchw-test PRIVATE XNNPACK gtest gtest_main)
+@@ -1347,226 +1307,6 @@ IF(XNNPACK_BUILD_TESTS)
+     TARGET_INCLUDE_DIRECTORIES(argmax-pooling-2d-test PRIVATE src test)
+     TARGET_LINK_LIBRARIES(argmax-pooling-2d-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME argmax-pooling-2d-test COMMAND argmax-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+-    TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+-
+-    ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+-    TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+-
+-    ADD_EXECUTABLE(clamp-test test/clamp.cc)
+-    TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME clamp-test COMMAND clamp-test)
+-
+-    ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate2-test COMMAND concatenate2-test)
+-
+-    ADD_EXECUTABLE(concatenate3-test test/concatenate3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate3-test COMMAND concatenate3-test)
+-
+-    ADD_EXECUTABLE(concatenate4-test test/concatenate4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(concatenate4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(concatenate4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+-    ADD_TEST(NAME concatenate4-test COMMAND concatenate4-test)
+-
+-    ADD_EXECUTABLE(convert-test test/convert.cc)
+-    TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME convert-test COMMAND convert-test)
+-
+-    ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+-
+-    ADD_EXECUTABLE(copy-test test/copy.cc)
+-    TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME copy-test COMMAND copy-test)
+-
+-    ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+-    SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+-
+-    ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+-    TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+-
+-    ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+-    SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
+-    ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+-
+-    ADD_EXECUTABLE(divide2-test test/divide2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME divide2-test COMMAND divide2-test)
+-
+-    ADD_EXECUTABLE(elu-test test/elu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME elu-test COMMAND elu-test)
+-
+-    ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+-
+-    ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+-
+-    ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+-    TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+-
+-    ADD_EXECUTABLE(floor-test test/floor.cc)
+-    TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME floor-test COMMAND floor-test)
+-
+-    ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+-    TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+-
+-    ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+-    TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+-
+-    ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+-
+-    ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+-
+-    ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+-
+-    ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+-
+-    ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+-
+-    ADD_EXECUTABLE(negate-test test/negate.cc)
+-    TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME negate-test COMMAND negate-test)
+-
+-    ADD_EXECUTABLE(prelu-test test/prelu.cc)
+-    TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME prelu-test COMMAND prelu-test)
+-
+-    ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+-    SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+-
+-    ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+-    SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+-    TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+-
+-    ADD_EXECUTABLE(softmax-test test/softmax.cc)
+-    TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME softmax-test COMMAND softmax-test)
+-
+-    ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+-
+-    ADD_EXECUTABLE(square-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-test COMMAND square-test)
+-
+-    ADD_EXECUTABLE(square-root-test test/square.cc)
+-    TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME square-root-test COMMAND square-root-test)
+-
+-    ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+-    TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+-
+-    ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+-
+-    ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+-
+-    ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+-
+-    ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+-    TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+-
+-    ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+-    TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+-
+-    ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+-    TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
+-    ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+   # ---[ Normalization unit tests
+@@ -2834,21 +2574,7 @@ IF(XNNPACK_BUILD_TESTS)
+     ADD_EXECUTABLE(microkernel-utils-test test/microkernel-utils.cc)
+     TARGET_INCLUDE_DIRECTORIES(microkernel-utils-test PRIVATE include src)
+     TARGET_LINK_LIBRARIES(microkernel-utils-test PRIVATE microkernel-utils gtest gtest_main pthreadpool)
+-
+-    ADD_EXECUTABLE(operator-utils-test test/operator-utils.cc)
+-    TARGET_INCLUDE_DIRECTORIES(operator-utils-test PRIVATE include src)
+-    TARGET_LINK_LIBRARIES(operator-utils-test PRIVATE XNNPACK gtest gtest_main pthreadpool)
+   ENDIF()
+-
+-  ADD_EXECUTABLE(packing-test test/packing.cc)
+-  TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+-
+-  ADD_EXECUTABLE(indirection-test test/indirection.cc)
+-  TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+ # ---[ XNNPACK microbenchmarks
diff --git a/gnu/packages/patches/xnnpack-system-libraries.patch b/gnu/packages/patches/xnnpack-system-libraries.patch
index bc9225e927..a711aa0d6c 100644
--- a/gnu/packages/patches/xnnpack-system-libraries.patch
+++ b/gnu/packages/patches/xnnpack-system-libraries.patch
@@ -2,1794 +2,2659 @@ This patch allows the build process to use the provided dependencies instead
 of adding their source as CMake sub-directories (in which case "make install"
 would install googletest's and googlebenchmark's libraries and headers).
 
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 177b98d5..937385c3 100755
---- CMakeLists.txt	2022-07-06 22:35:09.748104656 +0200
-+++ CMakeLists.txt	2022-07-06 22:47:34.504666953 +0200
-@@ -6608,10 +6608,6 @@
+diff a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
+@@ -850,25 +850,8 @@
+     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
    ENDIF()
  ENDIF()
- TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
+ IF(XNNPACK_BUILD_LIBRARY)
+   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
+-  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
+-  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
+   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
+ ENDIF()
  
- # ---[ Configure FXdiv
- IF(NOT TARGET fxdiv)
-@@ -6630,9 +6626,6 @@
+@@ -889,12 +872,6 @@
      SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
+-IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
+-ENDIF()
  
  # ---[ Configure FP16
  IF(NOT TARGET fp16)
-@@ -6651,10 +6644,6 @@
+@@ -913,17 +890,7 @@
      SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
--TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
--TARGET_LINK_LIBRARIES(all_microkernels PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
+ IF(XNNPACK_BUILD_LIBRARY)
+-  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
+-  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
+-
+-  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
+   INSTALL(TARGETS XNNPACK
+       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -943,7 +910,7 @@
+   # Helper libraries
+   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
+   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
+-  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
++  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
+   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
+@@ -960,22 +927,22 @@
+     # ---[ Build operator-level unit tests
+     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
+ 
+     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
+ 
+     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
+ 
+     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
+ 
+     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
+@@ -985,27 +952,27 @@
+ 
+     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
+ 
+     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
+ 
+     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
+@@ -1015,12 +982,12 @@
+ 
+     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
+ 
+     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
+ 
+     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
+@@ -1035,25 +1002,25 @@
+ 
+     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
+ 
+     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
+ 
+     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
+     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
+     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
+     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
+ 
+     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
+@@ -1068,7 +1035,7 @@
+ 
+     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
+@@ -1083,197 +1050,197 @@
+ 
+     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
+ 
+     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
+ 
+     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
+ 
+     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
+ 
+     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
+ 
+     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
+ 
+     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
+ 
+     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
+ 
+     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
+ 
+     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
+ 
+     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
+ 
+     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
+ 
+     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
+ 
+     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
+     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
+ 
+     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
+ 
+     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
+ 
+     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
+ 
+     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
+ 
+     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
+ 
+     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
+ 
+     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
+ 
+     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
+ 
+     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
+ 
+     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
+@@ -1293,12 +1260,12 @@
+ 
+     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
+ 
+     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
+     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
++    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
+     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
+ 
+     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
+@@ -1350,22 +1317,22 @@
+ 
+     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
+ 
+     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
+ 
+     ADD_EXECUTABLE(clamp-test test/clamp.cc)
+     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME clamp-test COMMAND clamp-test)
+ 
+     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
+@@ -1385,187 +1352,187 @@
+ 
+     ADD_EXECUTABLE(convert-test test/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME convert-test COMMAND convert-test)
+ 
+     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
+     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
+ 
+     ADD_EXECUTABLE(copy-test test/copy.cc)
+     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME copy-test COMMAND copy-test)
+ 
+     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
+     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
+ 
+     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
+     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
+ 
+     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
+     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
++    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
+     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
+ 
+     ADD_EXECUTABLE(divide2-test test/divide2.cc)
+     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME divide2-test COMMAND divide2-test)
+ 
+     ADD_EXECUTABLE(elu-test test/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME elu-test COMMAND elu-test)
+ 
+     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
+ 
+     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
+ 
+     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
+     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
+ 
+     ADD_EXECUTABLE(floor-test test/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME floor-test COMMAND floor-test)
+ 
+     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
+     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
+ 
+     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
+ 
+     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
+ 
+     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
+ 
+     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
+ 
+     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
+     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
+ 
+     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
+     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
+ 
+     ADD_EXECUTABLE(negate-test test/negate.cc)
+     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME negate-test COMMAND negate-test)
+ 
+     ADD_EXECUTABLE(prelu-test test/prelu.cc)
+     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME prelu-test COMMAND prelu-test)
+ 
+     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
+     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
+ 
+     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
+     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
+     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
+ 
+     ADD_EXECUTABLE(softmax-test test/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME softmax-test COMMAND softmax-test)
+ 
+     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
+ 
+     ADD_EXECUTABLE(square-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-test COMMAND square-test)
+ 
+     ADD_EXECUTABLE(square-root-test test/square.cc)
+     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME square-root-test COMMAND square-root-test)
+ 
+     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
+     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
+ 
+     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
+ 
+     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
+ 
+     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
+ 
+     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
+     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
+ 
+     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
+     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
+ 
+     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
+     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
+-    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
++    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
+     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
+   ENDIF()
+ 
+@@ -1591,355 +1558,355 @@
  
- INSTALL(TARGETS XNNPACK
-     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -6705,7 +6694,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(add-nd-test add-nd-test)
- 
-   ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -6759,7 +6748,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(clamp-nc-test clamp-nc-test)
- 
-   ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -6777,7 +6766,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convert-nc-test convert-nc-test)
- 
-   ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-@@ -6786,7 +6775,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nhwc-test convolution-nhwc-test)
- 
-   ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-@@ -6795,7 +6784,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(convolution-nchw-test convolution-nchw-test)
- 
-   ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -6813,7 +6802,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(deconvolution-nhwc-test deconvolution-nhwc-test)
- 
-   ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -6840,7 +6829,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(divide-nd-test divide-nd-test)
- 
-   ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-@@ -6858,7 +6847,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(fully-connected-nc-test fully-connected-nc-test)
- 
-   ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-@@ -6876,7 +6865,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-nwc-test global-average-pooling-nwc-test)
- 
-   ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-@@ -6885,7 +6874,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(global-average-pooling-ncw-test global-average-pooling-ncw-test)
- 
-   ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-@@ -6894,7 +6883,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(hardswish-nc-test hardswish-nc-test)
- 
-   ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-@@ -6903,7 +6892,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(leaky-relu-nc-test leaky-relu-nc-test)
- 
-   ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-@@ -6912,7 +6901,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(max-pooling-nhwc-test max-pooling-nhwc-test)
- 
-   ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-@@ -6921,7 +6910,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(maximum-nd-test maximum-nd-test)
- 
-   ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-@@ -6930,7 +6919,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(minimum-nd-test minimum-nd-test)
- 
-   ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-@@ -6939,7 +6928,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(multiply-nd-test multiply-nd-test)
- 
-   ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-@@ -6957,7 +6946,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(prelu-nc-test prelu-nc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-@@ -6966,7 +6955,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nhwc-test resize-bilinear-nhwc-test)
- 
-   ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-@@ -6975,7 +6964,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(resize-bilinear-nchw-test resize-bilinear-nchw-test)
- 
-   ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-@@ -7029,7 +7018,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-   ADD_TEST(subtract-nd-test subtract-nd-test)
- 
-   ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -7084,7 +7073,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-f32-vcvt-test f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-minmax-test test/f16-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7093,7 +7082,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-dwconv-minmax-test f16-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7102,7 +7091,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-gavgpool-minmax-test f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7111,7 +7100,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-gemm-minmax-test f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7120,7 +7109,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
+ 
+   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-ibilinear-test f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc $<TARGET_OBJECTS:all_microkernels>  $<TARGET_OBJECTS:packing>)
-@@ -7129,7 +7118,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f16-igemm-minmax-test f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7138,7 +7127,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-maxpool-minmax-test f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7147,7 +7136,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-spmm-minmax-test f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7156,7 +7145,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
+ 
+   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
+ 
+   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vadd-minmax-test f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7165,7 +7154,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vaddc-minmax-test f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7174,7 +7163,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vclamp-test f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7183,7 +7172,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
+ 
+   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdiv-minmax-test f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7192,7 +7181,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vdivc-minmax-test f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7201,7 +7190,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrdivc-minmax-test f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7210,7 +7199,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
+ 
+   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vhswish-test f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7219,7 +7208,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
+ 
+   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vlrelu-test f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7228,7 +7217,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmax-test f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7237,7 +7226,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmaxc-test f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7246,7 +7235,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmin-test f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7255,7 +7244,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
+ 
+   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vminc-test f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7264,7 +7253,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
+ 
+   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmul-minmax-test f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7273,7 +7262,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulc-minmax-test f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7282,7 +7271,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vmulcaddc-minmax-test f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7291,7 +7280,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
+ 
+   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-prelu-test f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7300,7 +7289,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
+ 
+   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
+ 
+   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
+ 
+   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsub-minmax-test f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7309,7 +7298,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vsubc-minmax-test f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7318,7 +7307,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f16-vrsubc-minmax-test f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7327,7 +7316,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-argmaxpool-test f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7336,7 +7325,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
+ 
+   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-avgpool-minmax-test f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7345,7 +7334,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc-test f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7354,7 +7343,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-conv-hwc2chw-test f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-test test/f32-dwconv.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7363,7 +7352,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-test f32-dwconv-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7372,7 +7361,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv2d-chw-test f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-minmax-test test/f32-dwconv-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7381,7 +7370,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-dwconv-minmax-test f32-dwconv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7390,7 +7379,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
+ 
+   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-f16-vcvt-test f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7399,7 +7388,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qs8-vcvt-test f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7408,7 +7397,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-qu8-vcvt-test f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7417,7 +7406,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-cw-test f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7426,7 +7415,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-gavgpool-minmax-test f32-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemm-test test/f32-gemm.cc test/f32-gemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7435,7 +7424,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-test f32-gemm-test)
- 
-   ADD_EXECUTABLE(f32-gemm-relu-test test/f32-gemm-relu.cc test/f32-gemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7444,7 +7433,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-relu-test f32-gemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-gemm-minmax-test test/f32-gemm-minmax.cc test/f32-gemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7453,7 +7442,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-gemm-minmax-test f32-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-gemminc-minmax-test test/f32-gemminc-minmax.cc test/f32-gemminc-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7462,7 +7451,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemminc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-gemminc-minmax-test f32-gemminc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7471,7 +7460,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
+ 
+@@ -1975,13 +1942,13 @@
+ 
+   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-test f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7480,7 +7469,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
+ 
+   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-ibilinear-chw-test f32-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f32-igemm-test test/f32-igemm.cc test/f32-igemm-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7489,7 +7478,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-test f32-igemm-test)
- 
-   ADD_EXECUTABLE(f32-igemm-relu-test test/f32-igemm-relu.cc test/f32-igemm-relu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7498,7 +7487,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-relu-test f32-igemm-relu-test)
- 
-   ADD_EXECUTABLE(f32-igemm-minmax-test test/f32-igemm-minmax.cc test/f32-igemm-minmax-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7511,7 +7500,7 @@
-     # Work-around for "too many sections" error
-     TARGET_COMPILE_OPTIONS(f32-igemm-minmax-test PRIVATE "$<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:MinSizeRel>>>:-Wa,-mbig-obj>")
-   ENDIF()
--  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(f32-igemm-minmax-test f32-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7520,7 +7509,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
+ 
+@@ -2016,13 +1983,13 @@
+ 
+   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-maxpool-minmax-test f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7529,7 +7518,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-pavgpool-minmax-test f32-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-ppmm-minmax-test test/f32-ppmm-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7538,7 +7527,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-ppmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(f32-ppmm-minmax-test f32-ppmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7547,7 +7536,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
+ 
+@@ -2034,259 +2001,259 @@
+ 
+   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-prelu-test f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7556,7 +7545,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddexpminusmax-test f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7565,7 +7554,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddextexp-test f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7574,7 +7563,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-raddstoreexpminusmax-test f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7583,7 +7572,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
+ 
+   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-rmax-test f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7592,7 +7581,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
+ 
+   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-spmm-minmax-test f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7601,7 +7590,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vabs-test f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7610,7 +7599,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-test f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7619,7 +7608,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-minmax-test f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7628,7 +7617,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vadd-relu-test f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7637,7 +7626,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-test f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7646,7 +7635,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-minmax-test f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7655,7 +7644,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vaddc-relu-test f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7664,7 +7653,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vclamp-test f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7673,7 +7662,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
+ 
+   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vhswish-test f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7682,7 +7671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-test f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7691,7 +7680,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-minmax-test f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7700,7 +7689,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdiv-relu-test f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7709,7 +7698,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-test f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7718,7 +7707,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-minmax-test f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7727,7 +7716,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vdivc-relu-test f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7736,7 +7725,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-test f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7745,7 +7734,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-minmax-test f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7754,7 +7743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrdivc-relu-test f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7763,7 +7752,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-velu-test f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7772,7 +7761,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vlrelu-test f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7781,7 +7770,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmax-test f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7790,7 +7779,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmaxc-test f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7799,7 +7788,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
+ 
+   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmin-test f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7808,7 +7797,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
+ 
+   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vminc-test f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7817,7 +7806,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-test f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7826,7 +7815,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
+ 
+   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-minmax-test f32-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7835,7 +7824,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmul-relu-test f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7844,7 +7833,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-test f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7853,7 +7842,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-minmax-test f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7862,7 +7851,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulc-relu-test f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -7871,7 +7860,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vmulcaddc-minmax-test f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7880,7 +7869,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vneg-test f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7889,7 +7878,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
+ 
+   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrelu-test f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7898,7 +7887,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndne-test f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7907,7 +7896,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
+ 
+   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndz-test f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7916,7 +7905,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
+ 
+   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndu-test f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7925,7 +7914,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
+ 
+   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrndd-test f32-vrndd-test)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-test test/f32-vscaleexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7934,7 +7923,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleexpminusmax-test f32-vscaleexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-test test/f32-vscaleextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7943,7 +7932,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vscaleextexp-test f32-vscaleextexp-test)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7952,7 +7941,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
+ 
+@@ -2304,91 +2271,91 @@
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsigmoid-test f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7961,7 +7950,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
+ 
+   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqr-test f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7970,7 +7959,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiff-test f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7979,7 +7968,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrdiffc-test f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7988,7 +7977,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsqrt-test f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -7997,7 +7986,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-test f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8006,7 +7995,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-minmax-test f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8015,7 +8004,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsub-relu-test f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8024,7 +8013,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-test f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8033,7 +8022,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-minmax-test f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8042,7 +8031,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vsubc-relu-test f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8051,7 +8040,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-test f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8060,7 +8049,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-minmax-test f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8069,7 +8058,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
+ 
+   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(f32-vrsubc-relu-test f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-minmax-fp32-test test/qc8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8078,7 +8067,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qc8-dwconv-minmax-fp32-test qc8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-gemm-minmax-fp32-test test/qc8-gemm-minmax-fp32.cc test/qc8-gemm-minmax-fp32-2.cc test/qc8-gemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8087,7 +8076,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-gemm-minmax-fp32-test qc8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qc8-igemm-minmax-fp32-test test/qc8-igemm-minmax-fp32.cc test/qc8-igemm-minmax-fp32-2.cc test/qc8-igemm-minmax-fp32-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8096,7 +8085,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qc8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qc8-igemm-minmax-fp32-test qc8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-fp32-test test/qs8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8105,7 +8094,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-fp32-test qs8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-minmax-rndnu-test test/qs8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8114,7 +8103,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-rndnu-test qs8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8123,7 +8112,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
+ 
+   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
+ 
+@@ -2406,31 +2373,31 @@
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-f32-vcvt-test qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8132,7 +8121,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-fp32-test qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8141,7 +8130,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-minmax-rndnu-test qs8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-fp32-test test/qs8-gemm-minmax-fp32.cc test/qs8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8150,7 +8139,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-fp32-test qs8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gemm-minmax-rndnu-test test/qs8-gemm-minmax-rndnu.cc test/qs8-gemm-minmax-rndnu-2.cc test/qs8-gemm-minmax-rndnu-3.cc test/qs8-gemm-minmax-rndnu-4.cc test/qs8-gemm-minmax-rndnu-5.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8159,7 +8148,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-gemm-minmax-rndnu-test qs8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-fp32-test test/qs8-igemm-minmax-fp32.cc test/qs8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8168,7 +8157,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-fp32-test qs8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-igemm-minmax-rndnu-test test/qs8-igemm-minmax-rndnu.cc test/qs8-igemm-minmax-rndnu-2.cc test/qs8-igemm-minmax-rndnu-3.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8177,7 +8166,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main jit gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main jit gemm-microkernel-tester)
-   ADD_TEST(qs8-igemm-minmax-rndnu-test qs8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8186,7 +8175,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2461,81 +2428,81 @@
+   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-requantization-test qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8195,7 +8184,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
+ 
+   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vadd-minmax-test qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8204,7 +8193,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vaddc-minmax-test qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8213,7 +8202,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmul-minmax-fp32-test qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8222,7 +8211,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-vmulc-minmax-fp32-test qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-test test/qu8-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8231,7 +8220,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-avgpool-minmax-test qu8-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-fp32-test test/qu8-dwconv-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8240,7 +8229,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-fp32-test qu8-dwconv-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-minmax-rndnu-test test/qu8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8249,7 +8238,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-dwconv-minmax-rndnu-test qu8-dwconv-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8258,7 +8247,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
+   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-f32-vcvt-test qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8267,7 +8256,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-fp32-test qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8276,7 +8265,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-minmax-rndnu-test qu8-gavgpool-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-fp32-test test/qu8-gemm-minmax-fp32.cc test/qu8-gemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8285,7 +8274,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-fp32-test qu8-gemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gemm-minmax-rndnu-test test/qu8-gemm-minmax-rndnu.cc test/qu8-gemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8294,7 +8283,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-gemm-minmax-rndnu-test qu8-gemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-fp32-test test/qu8-igemm-minmax-fp32.cc test/qu8-igemm-minmax-fp32-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8303,7 +8292,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-fp32-test qu8-igemm-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-rndnu-test test/qu8-igemm-minmax-rndnu.cc test/qu8-igemm-minmax-rndnu-2.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -8312,7 +8301,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main gemm-microkernel-tester)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main gemm-microkernel-tester)
-   ADD_TEST(qu8-igemm-minmax-rndnu-test qu8-igemm-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8321,7 +8310,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
+ 
+@@ -2566,161 +2533,161 @@
+   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-requantization-test qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8330,7 +8319,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
+ 
+   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vadd-minmax-test qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8339,7 +8328,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vaddc-minmax-test qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8348,7 +8337,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-fp32-test qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8357,7 +8346,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmul-minmax-rndnu-test qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8366,7 +8355,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-fp32-test qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8375,7 +8364,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
+   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-vmulc-minmax-rndnu-test qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8384,7 +8373,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
+ 
+   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
+ 
+   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
+ 
+   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
+ 
+   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
+ 
+   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-ibilinear-test s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8393,7 +8382,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-maxpool-minmax-test s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8402,7 +8391,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(s8-vclamp-test s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8411,7 +8400,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
+ 
+   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-lut32norm-test u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8420,7 +8409,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
+ 
+   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-ibilinear-test u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8429,7 +8418,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
+ 
+   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-maxpool-minmax-test u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8438,7 +8427,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
++  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
+   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
+ 
+   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-rmax-test u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8447,7 +8436,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
+ 
+   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
    TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(u8-vclamp-test u8-vclamp-test)
- 
-   ADD_EXECUTABLE(x8-transpose-test test/x8-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8456,7 +8445,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-transpose-test x8-transpose-test)
- 
-   ADD_EXECUTABLE(x16-transpose-test test/x16-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8465,7 +8454,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x16-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x16-transpose-test x16-transpose-test)
- 
-   ADD_EXECUTABLE(x32-packx-test test/x32-packx.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8474,7 +8463,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-packx-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-packx-test x32-packx-test)
- 
-   ADD_EXECUTABLE(x32-unpool-test test/x32-unpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8483,7 +8472,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-unpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-unpool-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-unpool-test x32-unpool-test)
- 
-   ADD_EXECUTABLE(x32-depthtospace2d-chw2hwc-test test/x32-depthtospace2d-chw2hwc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8492,7 +8481,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-depthtospace2d-chw2hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-depthtospace2d-chw2hwc-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-depthtospace2d-chw2hwc-test x32-depthtospace2d-chw2hwc-test)
- 
-   ADD_EXECUTABLE(x32-transpose-test test/x32-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8501,7 +8490,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-transpose-test x32-transpose-test)
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8510,7 +8499,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
+ 
+@@ -2762,25 +2729,25 @@
+ 
+   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-zip-test x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8519,7 +8508,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
+ 
+   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
    TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x64-transpose-test x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8528,7 +8517,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
+   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
+ 
+   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-lut-test x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8537,7 +8526,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
+-  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
+ 
+   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
    TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x8-zip-test x8-zip-test)
- 
-   ADD_EXECUTABLE(xx-fill-test test/xx-fill.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8546,7 +8535,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-fill-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-fill-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-fill-test xx-fill-test)
- 
-   ADD_EXECUTABLE(xx-pad-test test/xx-pad.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -8555,7 +8544,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(xx-pad-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(xx-pad-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(xx-pad-test xx-pad-test)
- 
-   ADD_EXECUTABLE(jit-test test/jit.cc)
-@@ -8682,7 +8671,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
+   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
+ 
+@@ -2842,12 +2809,12 @@
+ 
+   ADD_EXECUTABLE(packing-test test/packing.cc)
+   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
+ 
+   ADD_EXECUTABLE(indirection-test test/indirection.cc)
+   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
++  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
+ ENDIF()
+ 
+@@ -2864,7 +2831,7 @@
+   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
+   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
+-  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
+   IF(XNNPACK_BUILD_LIBRARY)
+     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
+@@ -2873,134 +2840,134 @@
+   # ---[ Build accuracy microbenchmarks
+   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
+   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
+-  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
+ 
+   # ---[ Build accuracy tests
+   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-f16-cvt-eval PROPERTIES
-@@ -8690,7 +8679,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qs8-cvt-eval PROPERTIES
-@@ -8698,7 +8687,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-qu8-cvt-eval PROPERTIES
-@@ -8706,7 +8695,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-exp-eval PROPERTIES
-@@ -8714,7 +8703,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expm1minus-eval PROPERTIES
-@@ -8722,7 +8711,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-expminus-eval PROPERTIES
-@@ -8730,7 +8719,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundne-eval PROPERTIES
-@@ -8738,7 +8727,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundd-eval PROPERTIES
-@@ -8746,7 +8735,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundu-eval PROPERTIES
-@@ -8754,7 +8743,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
+-  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
    TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE cpuinfo gtest gtest_main)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc $<TARGET_OBJECTS:all_microkernels>)
-   SET_TARGET_PROPERTIES(f32-roundz-eval PROPERTIES
-@@ -8762,7 +8751,7 @@
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS NO)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE cpuinfo gtest gtest_main)
+-  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
  
-   # ---[ Build end-to-end microbenchmarks
-   ADD_LIBRARY(bench-models STATIC
+   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
+-  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
++  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
+   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
+ 
+   IF(XNNPACK_BUILD_LIBRARY)
+@@ -3030,7 +2997,7 @@
+       models/qu8-mobilenet-v2.cc)
+     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
+     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
+ 
+     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
+@@ -3039,7 +3006,7 @@
+ 
+     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
+@@ -3049,33 +3016,33 @@
+ 
+     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
+     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
+-    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
++    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
+     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+     # ---[ Build operator-level microbenchmarks
+     ADD_EXECUTABLE(abs-bench bench/abs.cc)
+     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
+@@ -3083,11 +3050,11 @@
+ 
+     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
+     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
+     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
+     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
+@@ -3095,11 +3062,11 @@
+ 
+     ADD_EXECUTABLE(convert-bench bench/convert.cc)
+     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
+     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
+@@ -3107,23 +3074,23 @@
+ 
+     ADD_EXECUTABLE(elu-bench bench/elu.cc)
+     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(floor-bench bench/floor.cc)
+     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
+     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
+     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
+     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
+@@ -3139,7 +3106,7 @@
+ 
+     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
+     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
+-    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
++    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
+ 
+     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
+     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
+@@ -3161,378 +3128,378 @@
+   # ---[ Build microkernel-level microbenchmarks
+   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
++  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
+   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
+   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
++  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
+   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
+   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
+ 
+   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
+   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
+   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
+   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
+   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
++  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
+   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
+   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
+   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
+   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
+   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
+ 
+   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ 
+   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
+   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
+-  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
++  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
+   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
+ ENDIF()
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 24/32] gnu: Remove xnnpack-for-torch2.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (22 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 25/32] gnu: Add qnnpack-pytorch David Elsing
                         ` (7 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (xnnpack-for-torch2): Delete variable.
(python-pytorch-for-r-torch)[inputs]: Remove field.
* gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |    1 -
 gnu/packages/machine-learning.scm             |   31 -
 .../xnnpack-for-torch2-system-libraries.patch | 2660 -----------------
 3 files changed, 2692 deletions(-)
 delete mode 100644 gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f6e1a45a38..adcb1be9b7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2207,7 +2207,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
   %D%/packages/patches/xnnpack-remove-broken-tests.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
-  %D%/packages/patches/xnnpack-for-torch2-system-libraries.patch	\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 00cd3f88fd..375fd77a28 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4190,34 +4190,6 @@ (define-public xnnpack
          "i686-linux" "x86_64-linux" "i686-mingw" "x86_64-mingw"))
       (license license:bsd-3))))
 
-(define-public xnnpack-for-torch2
-  ;; There's currently no tag on this repo.
-  (let ((version "0.0")
-        (commit "51a987591a6fc9f0fc0707077f53d763ac132cbf")
-        (revision "3"))
-    (package
-      (inherit xnnpack)
-      (name "xnnpack")
-      (version (git-version version revision commit))
-      (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1rzby82xq8d0rl1d148yz88jh9cpsw5c8b2yw7yg39mi7qmr55rm"))
-                (patches (search-patches "xnnpack-for-torch2-system-libraries.patch"))))
-      (arguments
-       (list
-        #:tests? #false
-        #:configure-flags '(list "-DXNNPACK_USE_SYSTEM_LIBS=YES"
-                                 "-DBUILD_SHARED_LIBS=ON"
-                                 "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-                                 "-DXNNPACK_LIBRARY_TYPE=shared"
-                                 "-DXNNPACK_BUILD_TESTS=FALSE" ;FIXME: see below
-                                 "-DXNNPACK_BUILD_BENCHMARKS=FALSE"))))))
-
 ;; Warning: This package requires AVX2 or AVX-512 instructions.
 (define-public fbgemm
   (package
@@ -4586,9 +4558,6 @@ (define-public python-pytorch-for-r-torch
                   (substitute* "functorch/CMakeLists.txt"
                     (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
                      "$ORIGIN/../torch/lib"))))))
-    (inputs
-     (modify-inputs (package-inputs python-pytorch)
-       (replace "xnnpack" xnnpack-for-torch2)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
diff --git a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch b/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
deleted file mode 100644
index a711aa0d6c..0000000000
--- a/gnu/packages/patches/xnnpack-for-torch2-system-libraries.patch
+++ /dev/null
@@ -1,2660 +0,0 @@
-This patch allows the build process to use the provided dependencies instead
-of adding their source as CMake sub-directories (in which case "make install"
-would install googletest's and googlebenchmark's libraries and headers).
-
-diff a/CMakeLists.txt b/CMakeLists.txt
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt	2023-12-27 13:29:04.608138355 +0100
-@@ -850,25 +850,8 @@
-     SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}")
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(hardware-config PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(logging PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(normalization PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
- IF(XNNPACK_BUILD_LIBRARY)
-   TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
--  TARGET_LINK_LIBRARIES(allocator PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(cache PRIVATE memory pthreadpool)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operators PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(operator-utils PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(mutex PRIVATE pthreadpool)
--  TARGET_LINK_LIBRARIES(memory PRIVATE pthreadpool)
-   TARGET_LINK_LIBRARIES(post-operation PUBLIC pthreadpool allocator)
- ENDIF()
- 
-@@ -889,12 +872,6 @@
-     SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fxdiv)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fxdiv)
--IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fxdiv)
--ENDIF()
- 
- # ---[ Configure FP16
- IF(NOT TARGET fp16)
-@@ -913,17 +890,7 @@
-     SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C)
-   ENDIF()
- ENDIF()
--TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microkernels-prod PRIVATE fp16)
--TARGET_LINK_LIBRARIES(microparams-init PRIVATE fp16)
--TARGET_LINK_LIBRARIES(packing PRIVATE fp16)
--TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
- IF(XNNPACK_BUILD_LIBRARY)
--  TARGET_LINK_LIBRARIES(subgraph PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operators PRIVATE fp16)
--  TARGET_LINK_LIBRARIES(operator-run PRIVATE fp16)
--
--  TARGET_LINK_LIBRARIES(XNNPACK PRIVATE fp16)
-   INSTALL(TARGETS XNNPACK
-       LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-       ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -943,7 +910,7 @@
-   # Helper libraries
-   ADD_LIBRARY(gemm-microkernel-tester STATIC test/gemm-microkernel-tester.cc)
-   TARGET_INCLUDE_DIRECTORIES(gemm-microkernel-tester PRIVATE . include src test)
--  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE fp16 pthreadpool gtest)
-+  TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE gtest)
-   TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE jit packing)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(gemm-microkernel-tester PRIVATE XNNPACK post-operation)
-@@ -960,22 +927,22 @@
-     # ---[ Build operator-level unit tests
-     ADD_EXECUTABLE(abs-nc-test test/abs-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-test COMMAND abs-nc-test)
- 
-     ADD_EXECUTABLE(abs-nc-eager-test test/abs-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(abs-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME abs-nc-eager-test COMMAND abs-nc-eager-test)
- 
-     ADD_EXECUTABLE(add-nd-test test/add-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-test COMMAND add-nd-test)
- 
-     ADD_EXECUTABLE(add-nd-eager-test test/add-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(add-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(add-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME add-nd-eager-test COMMAND add-nd-eager-test)
- 
-     ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -985,27 +952,27 @@
- 
-     ADD_EXECUTABLE(average-pooling-nhwc-test test/average-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(average-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME average-pooling-nhwc-test COMMAND average-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-test test/bankers-rounding-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-test COMMAND bankers-rounding-nc-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-nc-eager-test test/bankers-rounding-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME bankers-rounding-nc-eager-test COMMAND bankers-rounding-nc-eager-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-test test/ceiling-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-test COMMAND ceiling-nc-test)
- 
-     ADD_EXECUTABLE(ceiling-nc-eager-test test/ceiling-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(ceiling-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME ceiling-nc-eager-test COMMAND ceiling-nc-eager-test)
- 
-     ADD_EXECUTABLE(channel-shuffle-nc-test test/channel-shuffle-nc.cc)
-@@ -1015,12 +982,12 @@
- 
-     ADD_EXECUTABLE(clamp-nc-test test/clamp-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-test COMMAND clamp-nc-test)
- 
-     ADD_EXECUTABLE(clamp-nc-eager-test test/clamp-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(clamp-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME clamp-nc-eager-test COMMAND clamp-nc-eager-test)
- 
-     ADD_EXECUTABLE(constant-pad-nd-test test/constant-pad-nd.cc)
-@@ -1035,25 +1002,25 @@
- 
-     ADD_EXECUTABLE(convert-nc-test test/convert-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-test COMMAND convert-nc-test)
- 
-     ADD_EXECUTABLE(convert-nc-eager-test test/convert-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convert-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convert-nc-eager-test COMMAND convert-nc-eager-test)
- 
-     ADD_EXECUTABLE(convolution-nhwc-test test/convolution-nhwc.cc)
-     SET_TARGET_PROPERTIES(convolution-nhwc-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     TARGET_LINK_LIBRARIES(convolution-nhwc-test PRIVATE convolution-test-helpers)
-     ADD_TEST(NAME convolution-nhwc-test COMMAND convolution-nhwc-test)
- 
-     ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-     SET_TARGET_PROPERTIES(convolution-nchw-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(convolution-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME convolution-nchw-test COMMAND convolution-nchw-test)
- 
-     ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -1068,7 +1035,7 @@
- 
-     ADD_EXECUTABLE(deconvolution-nhwc-test test/deconvolution-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(deconvolution-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME deconvolution-nhwc-test COMMAND deconvolution-nhwc-test)
- 
-     ADD_EXECUTABLE(depth-to-space-nchw2nhwc-test test/depth-to-space-nchw2nhwc.cc)
-@@ -1083,197 +1050,197 @@
- 
-     ADD_EXECUTABLE(divide-nd-test test/divide-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-test COMMAND divide-nd-test)
- 
-     ADD_EXECUTABLE(divide-nd-eager-test test/divide-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(divide-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME divide-nd-eager-test COMMAND divide-nd-eager-test)
- 
-     ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-test COMMAND elu-nc-test)
- 
-     ADD_EXECUTABLE(elu-nc-eager-test test/elu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(elu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME elu-nc-eager-test COMMAND elu-nc-eager-test)
- 
-     ADD_EXECUTABLE(fully-connected-nc-test test/fully-connected-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(fully-connected-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME fully-connected-nc-test COMMAND fully-connected-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-test test/floor-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-test COMMAND floor-nc-test)
- 
-     ADD_EXECUTABLE(floor-nc-eager-test test/floor-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(floor-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME floor-nc-eager-test COMMAND floor-nc-eager-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-nwc-test test/global-average-pooling-nwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-nwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-nwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-nwc-test COMMAND global-average-pooling-nwc-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-ncw-test test/global-average-pooling-ncw.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-ncw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME global-average-pooling-ncw-test COMMAND global-average-pooling-ncw-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-test COMMAND hardswish-nc-test)
- 
-     ADD_EXECUTABLE(hardswish-nc-eager-test test/hardswish-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(hardswish-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME hardswish-nc-eager-test COMMAND hardswish-nc-eager-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-test COMMAND leaky-relu-nc-test)
- 
-     ADD_EXECUTABLE(leaky-relu-nc-eager-test test/leaky-relu-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(leaky-relu-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME leaky-relu-nc-eager-test COMMAND leaky-relu-nc-eager-test)
- 
-     ADD_EXECUTABLE(max-pooling-nhwc-test test/max-pooling-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(max-pooling-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME max-pooling-nhwc-test COMMAND max-pooling-nhwc-test)
- 
-     ADD_EXECUTABLE(maximum-nd-test test/maximum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-test COMMAND maximum-nd-test)
- 
-     ADD_EXECUTABLE(maximum-nd-eager-test test/maximum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(maximum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME maximum-nd-eager-test COMMAND maximum-nd-eager-test)
- 
-     ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-test COMMAND minimum-nd-test)
- 
-     ADD_EXECUTABLE(minimum-nd-eager-test test/minimum-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(minimum-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME minimum-nd-eager-test COMMAND minimum-nd-eager-test)
- 
-     ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-test COMMAND multiply-nd-test)
- 
-     ADD_EXECUTABLE(multiply-nd-eager-test test/multiply-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(multiply-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME multiply-nd-eager-test COMMAND multiply-nd-eager-test)
- 
-     ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-test COMMAND negate-nc-test)
- 
-     ADD_EXECUTABLE(negate-nc-eager-test test/negate-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(negate-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME negate-nc-eager-test COMMAND negate-nc-eager-test)
- 
-     ADD_EXECUTABLE(prelu-nc-test test/prelu-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(prelu-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME prelu-nc-test COMMAND prelu-nc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nhwc-test test/resize-bilinear-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nhwc-test COMMAND resize-bilinear-nhwc-test)
- 
-     ADD_EXECUTABLE(resize-bilinear-nchw-test test/resize-bilinear-nchw.cc)
-     TARGET_INCLUDE_DIRECTORIES(resize-bilinear-nchw-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(resize-bilinear-nchw-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME resize-bilinear-nchw-test COMMAND resize-bilinear-nchw-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-test test/sigmoid-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-test COMMAND sigmoid-nc-test)
- 
-     ADD_EXECUTABLE(sigmoid-nc-eager-test test/sigmoid-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(sigmoid-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME sigmoid-nc-eager-test COMMAND sigmoid-nc-eager-test)
- 
-     ADD_EXECUTABLE(slice-nd-test test/slice-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-test COMMAND slice-nd-test)
- 
-     ADD_EXECUTABLE(slice-nd-eager-test test/slice-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(slice-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(slice-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME slice-nd-eager-test COMMAND slice-nd-eager-test)
- 
-     ADD_EXECUTABLE(softmax-nc-test test/softmax-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(softmax-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME softmax-nc-test COMMAND softmax-nc-test)
- 
-     ADD_EXECUTABLE(space-to-depth-nhwc-test test/space-to-depth-nhwc.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-nhwc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(space-to-depth-nhwc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME space-to-depth-nhwc-test COMMAND space-to-depth-nhwc-test)
- 
-     ADD_EXECUTABLE(square-nc-test test/square-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-test COMMAND square-nc-test)
- 
-     ADD_EXECUTABLE(square-nc-eager-test test/square-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-nc-eager-test COMMAND square-nc-eager-test)
- 
-     ADD_EXECUTABLE(square-root-nc-test test/square-root-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-test COMMAND square-root-nc-test)
- 
-     ADD_EXECUTABLE(square-root-nc-eager-test test/square-root-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(square-root-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME square-root-nc-eager-test COMMAND square-root-nc-eager-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-test test/squared-difference-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-test COMMAND squared-difference-nd-test)
- 
-     ADD_EXECUTABLE(squared-difference-nd-eager-test test/squared-difference-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(squared-difference-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME squared-difference-nd-eager-test COMMAND squared-difference-nd-eager-test)
- 
-     ADD_EXECUTABLE(subtract-nd-test test/subtract-nd.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-test COMMAND subtract-nd-test)
- 
-     ADD_EXECUTABLE(subtract-nd-eager-test test/subtract-nd-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract-nd-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(subtract-nd-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME subtract-nd-eager-test COMMAND subtract-nd-eager-test)
- 
-     ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
-@@ -1293,12 +1260,12 @@
- 
-     ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-test COMMAND truncation-nc-test)
- 
-     ADD_EXECUTABLE(truncation-nc-eager-test test/truncation-nc-eager.cc)
-     TARGET_INCLUDE_DIRECTORIES(truncation-nc-eager-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK fp16 gtest gtest_main)
-+    TARGET_LINK_LIBRARIES(truncation-nc-eager-test PRIVATE XNNPACK gtest gtest_main)
-     ADD_TEST(NAME truncation-nc-eager-test COMMAND truncation-nc-eager-test)
- 
-     ADD_EXECUTABLE(unpooling-nhwc-test test/unpooling-nhwc.cc)
-@@ -1350,22 +1317,22 @@
- 
-     ADD_EXECUTABLE(average-pooling-2d-test test/average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME average-pooling-2d-test COMMAND average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(bankers-rounding-test test/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME bankers-rounding-test COMMAND bankers-rounding-test)
- 
-     ADD_EXECUTABLE(ceiling-test test/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(ceiling-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME ceiling-test COMMAND ceiling-test)
- 
-     ADD_EXECUTABLE(clamp-test test/clamp.cc)
-     TARGET_INCLUDE_DIRECTORIES(clamp-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(clamp-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME clamp-test COMMAND clamp-test)
- 
-     ADD_EXECUTABLE(concatenate2-test test/concatenate2.cc)
-@@ -1385,187 +1352,187 @@
- 
-     ADD_EXECUTABLE(convert-test test/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(convert-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME convert-test COMMAND convert-test)
- 
-     ADD_EXECUTABLE(convolution-2d-test test/convolution-2d.cc)
-     SET_TARGET_PROPERTIES(convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME convolution-2d-test COMMAND convolution-2d-test)
- 
-     ADD_EXECUTABLE(copy-test test/copy.cc)
-     TARGET_INCLUDE_DIRECTORIES(copy-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(copy-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME copy-test COMMAND copy-test)
- 
-     ADD_EXECUTABLE(deconvolution-2d-test test/deconvolution-2d.cc)
-     SET_TARGET_PROPERTIES(deconvolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(deconvolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME deconvolution-2d-test COMMAND deconvolution-2d-test)
- 
-     ADD_EXECUTABLE(depth-to-space-test test/depth-to-space.cc)
-     TARGET_INCLUDE_DIRECTORIES(depth-to-space-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(depth-to-space-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME depth-to-space-test COMMAND depth-to-space-test)
- 
-     ADD_EXECUTABLE(depthwise-convolution-2d-test test/depthwise-convolution-2d.cc)
-     SET_TARGET_PROPERTIES(depthwise-convolution-2d-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(depthwise-convolution-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph convolution-test-helpers)
-+    TARGET_LINK_LIBRARIES(depthwise-convolution-2d-test PRIVATE XNNPACK gtest gtest_main subgraph convolution-test-helpers)
-     ADD_TEST(NAME depthwise-convolution-2d-test COMMAND depthwise-convolution-2d-test)
- 
-     ADD_EXECUTABLE(divide2-test test/divide2.cc)
-     TARGET_INCLUDE_DIRECTORIES(divide2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(divide2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME divide2-test COMMAND divide2-test)
- 
-     ADD_EXECUTABLE(elu-test test/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(elu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME elu-test COMMAND elu-test)
- 
-     ADD_EXECUTABLE(even-split2-test test/even-split2.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split2-test COMMAND even-split2-test)
- 
-     ADD_EXECUTABLE(even-split3-test test/even-split3.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split3-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split3-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split3-test COMMAND even-split3-test)
- 
-     ADD_EXECUTABLE(even-split4-test test/even-split4.cc)
-     TARGET_INCLUDE_DIRECTORIES(even-split4-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(even-split4-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME even-split4-test COMMAND even-split4-test)
- 
-     ADD_EXECUTABLE(floor-test test/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(floor-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME floor-test COMMAND floor-test)
- 
-     ADD_EXECUTABLE(fully-connected-test test/fully-connected.cc)
-     TARGET_INCLUDE_DIRECTORIES(fully-connected-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(fully-connected-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME fully-connected-test COMMAND fully-connected-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-1d-test test/global-average-pooling-1d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-1d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-1d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-1d-test COMMAND global-average-pooling-1d-test)
- 
-     ADD_EXECUTABLE(global-average-pooling-2d-test test/global-average-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME global-average-pooling-2d-test COMMAND global-average-pooling-2d-test)
- 
-     ADD_EXECUTABLE(hardswish-test test/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(hardswish-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME hardswish-test COMMAND hardswish-test)
- 
-     ADD_EXECUTABLE(leaky-relu-test test/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(leaky-relu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME leaky-relu-test COMMAND leaky-relu-test)
- 
-     ADD_EXECUTABLE(max-pooling-2d-test test/max-pooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(max-pooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME max-pooling-2d-test COMMAND max-pooling-2d-test)
- 
-     ADD_EXECUTABLE(maximum2-test test/maximum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(maximum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(maximum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME maximum2-test COMMAND maximum2-test)
- 
-     ADD_EXECUTABLE(minimum2-test test/minimum2.cc)
-     TARGET_INCLUDE_DIRECTORIES(minimum2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(minimum2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME minimum2-test COMMAND minimum2-test)
- 
-     ADD_EXECUTABLE(multiply2-test test/multiply2.cc)
-     TARGET_INCLUDE_DIRECTORIES(multiply2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(multiply2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME multiply2-test COMMAND multiply2-test)
- 
-     ADD_EXECUTABLE(negate-test test/negate.cc)
-     TARGET_INCLUDE_DIRECTORIES(negate-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(negate-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME negate-test COMMAND negate-test)
- 
-     ADD_EXECUTABLE(prelu-test test/prelu.cc)
-     TARGET_INCLUDE_DIRECTORIES(prelu-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(prelu-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME prelu-test COMMAND prelu-test)
- 
-     ADD_EXECUTABLE(sigmoid-test test/sigmoid.cc)
-     SET_TARGET_PROPERTIES(sigmoid-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(sigmoid-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME sigmoid-test COMMAND sigmoid-test)
- 
-     ADD_EXECUTABLE(static-slice-test test/static-slice.cc)
-     SET_TARGET_PROPERTIES(static-slice-test PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(static-slice-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK fp16 gmock gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-slice-test PRIVATE XNNPACK gmock gtest gtest_main subgraph)
-     ADD_TEST(NAME static-slice-test COMMAND static-slice-test)
- 
-     ADD_EXECUTABLE(softmax-test test/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(softmax-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME softmax-test COMMAND softmax-test)
- 
-     ADD_EXECUTABLE(space-to-depth-2d-test test/space-to-depth-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(space-to-depth-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(space-to-depth-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME space-to-depth-2d-test COMMAND space-to-depth-2d-test)
- 
-     ADD_EXECUTABLE(square-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-test COMMAND square-test)
- 
-     ADD_EXECUTABLE(square-root-test test/square.cc)
-     TARGET_INCLUDE_DIRECTORIES(square-root-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(square-root-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME square-root-test COMMAND square-root-test)
- 
-     ADD_EXECUTABLE(squared-difference-test test/squared-difference.cc)
-     TARGET_INCLUDE_DIRECTORIES(squared-difference-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(squared-difference-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME squared-difference-test COMMAND squared-difference-test)
- 
-     ADD_EXECUTABLE(static-constant-pad-test test/static-constant-pad.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-constant-pad-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-constant-pad-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-constant-pad-test COMMAND static-constant-pad-test)
- 
-     ADD_EXECUTABLE(static-reshape-test test/static-reshape.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-reshape-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-reshape-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-reshape-test COMMAND static-reshape-test)
- 
-     ADD_EXECUTABLE(static-resize-bilinear-2d-test test/static-resize-bilinear-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-resize-bilinear-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-resize-bilinear-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-resize-bilinear-2d-test COMMAND static-resize-bilinear-2d-test)
- 
-     ADD_EXECUTABLE(static-transpose-test test/static-transpose.cc)
-     TARGET_INCLUDE_DIRECTORIES(static-transpose-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(static-transpose-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME static-transpose-test COMMAND static-transpose-test)
- 
-     ADD_EXECUTABLE(subtract2-test test/subtract2.cc)
-     TARGET_INCLUDE_DIRECTORIES(subtract2-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(subtract2-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME subtract2-test COMMAND subtract2-test)
- 
-     ADD_EXECUTABLE(unpooling-2d-test test/unpooling-2d.cc)
-     TARGET_INCLUDE_DIRECTORIES(unpooling-2d-test PRIVATE src test)
--    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK fp16 gtest gtest_main subgraph)
-+    TARGET_LINK_LIBRARIES(unpooling-2d-test PRIVATE XNNPACK gtest gtest_main subgraph)
-     ADD_TEST(NAME unpooling-2d-test COMMAND unpooling-2d-test)
-   ENDIF()
- 
-@@ -1591,355 +1558,355 @@
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-test test/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-f32-vcvt-test COMMAND f16-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-test test/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-cw-test COMMAND f16-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f16-avgpool-minmax-test test/f16-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-avgpool-minmax-test COMMAND f16-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-test test/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-conv-hwc2chw-test COMMAND f16-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f16-dwconv-unipass-minmax-test test/f16-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv-unipass-minmax-test COMMAND f16-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-test test/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-dwconv2d-chw-test COMMAND f16-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f16-gavgpool-minmax-test test/f16-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gavgpool-minmax-test COMMAND f16-gavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-gemm-minmax-test test/f16-gemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-gemm-minmax-test COMMAND f16-gemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-chw-test test/f16-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-chw-test COMMAND f16-ibilinear-chw-test)
- 
-   ADD_EXECUTABLE(f16-ibilinear-test test/f16-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-ibilinear-test COMMAND f16-ibilinear-test)
- 
-   ADD_EXECUTABLE(f16-igemm-minmax-test test/f16-igemm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE gemm-microkernel-tester hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-igemm-minmax-test COMMAND f16-igemm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-maxpool-minmax-test test/f16-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-maxpool-minmax-test COMMAND f16-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-spmm-minmax-test test/f16-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-spmm-minmax-test COMMAND f16-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f16-rmax-test test/f16-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-rmax-test COMMAND f16-rmax-test)
- 
-   ADD_EXECUTABLE(f16-vabs-test test/f16-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vabs-test COMMAND f16-vabs-test)
- 
-   ADD_EXECUTABLE(f16-vadd-minmax-test test/f16-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vadd-minmax-test COMMAND f16-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vaddc-minmax-test test/f16-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vaddc-minmax-test COMMAND f16-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vclamp-test COMMAND f16-vclamp-test)
- 
-   ADD_EXECUTABLE(f16-vdiv-minmax-test test/f16-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdiv-minmax-test COMMAND f16-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vdivc-minmax-test test/f16-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vdivc-minmax-test COMMAND f16-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrdivc-minmax-test test/f16-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrdivc-minmax-test COMMAND f16-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-velu-test test/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-velu-test COMMAND f16-velu-test)
- 
-   ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vhswish-test COMMAND f16-vhswish-test)
- 
-   ADD_EXECUTABLE(f16-vlrelu-test test/f16-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vlrelu-test COMMAND f16-vlrelu-test)
- 
-   ADD_EXECUTABLE(f16-vmax-test test/f16-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmax-test COMMAND f16-vmax-test)
- 
-   ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmaxc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmaxc-test COMMAND f16-vmaxc-test)
- 
-   ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmin-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vmin-test COMMAND f16-vmin-test)
- 
-   ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vminc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vminc-test COMMAND f16-vminc-test)
- 
-   ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmul-minmax-test COMMAND f16-vmul-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulc-minmax-test test/f16-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vmulc-minmax-test COMMAND f16-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vmulcaddc-minmax-test test/f16-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f16-vmulcaddc-minmax-test COMMAND f16-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vneg-test test/f16-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f16-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vneg-test COMMAND f16-vneg-test)
- 
-   ADD_EXECUTABLE(f16-pavgpool-minmax-test test/f16-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-pavgpool-minmax-test COMMAND f16-pavgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-prelu-test COMMAND f16-prelu-test)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-test test/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-raddstoreexpminusmax-test COMMAND f16-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f16-vrndne-test test/f16-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndne-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndne-test COMMAND f16-vrndne-test)
- 
-   ADD_EXECUTABLE(f16-vrndz-test test/f16-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndz-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndz-test COMMAND f16-vrndz-test)
- 
-   ADD_EXECUTABLE(f16-vrndu-test test/f16-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndu-test COMMAND f16-vrndu-test)
- 
-   ADD_EXECUTABLE(f16-vrndd-test test/f16-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrndd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vrndd-test COMMAND f16-vrndd-test)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-test test/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsigmoid-test COMMAND f16-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f16-vsqr-test test/f16-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqr-test COMMAND f16-vsqr-test)
- 
-   ADD_EXECUTABLE(f16-vsqrt-test test/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f16-vsqrt-test COMMAND f16-vsqrt-test)
- 
-   ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsub-minmax-test COMMAND f16-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vsubc-minmax-test test/f16-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vsubc-minmax-test COMMAND f16-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f16-vrsubc-minmax-test test/f16-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f16-vrsubc-minmax-test COMMAND f16-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-argmaxpool-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-argmaxpool-test COMMAND f32-argmaxpool-test)
- 
-   ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-avgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-avgpool-minmax-test COMMAND f32-avgpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-test test/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc-test COMMAND f32-conv-hwc-test)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-test test/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-conv-hwc2chw-test COMMAND f32-conv-hwc2chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-dwconv2d-chw-test COMMAND f32-dwconv2d-chw-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-test test/f32-dwconv-multipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-test COMMAND f32-dwconv-multipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-multipass-minmax-test test/f32-dwconv-multipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-multipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-multipass-minmax-test PRIVATE hardware-config logging microkernel-utils microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-multipass-minmax-test COMMAND f32-dwconv-multipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-test test/f32-dwconv-unipass.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-test COMMAND f32-dwconv-unipass-test)
- 
-   ADD_EXECUTABLE(f32-dwconv-unipass-minmax-test test/f32-dwconv-unipass-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-unipass-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-dwconv-unipass-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-dwconv-unipass-minmax-test COMMAND f32-dwconv-unipass-minmax-test)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-f16-vcvt-test COMMAND f32-f16-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-test test/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qs8-vcvt-test COMMAND f32-qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-test test/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-qu8-vcvt-test COMMAND f32-qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-test test/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-cw-test COMMAND f32-gavgpool-cw-test)
- 
-   ADD_EXECUTABLE(f32-gavgpool-minmax-test test/f32-gavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-gavgpool-minmax-test COMMAND f32-gavgpool-minmax-test)
- 
-@@ -1975,13 +1942,13 @@
- 
-   ADD_EXECUTABLE(f32-ibilinear-test test/f32-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-test COMMAND f32-ibilinear-test)
- 
-   ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-ibilinear-chw-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-ibilinear-chw-test COMMAND f32-ibilinear-chw-test)
- 
-@@ -2016,13 +1983,13 @@
- 
-   ADD_EXECUTABLE(f32-maxpool-minmax-test test/f32-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-maxpool-minmax-test COMMAND f32-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(f32-pavgpool-minmax-test test/f32-pavgpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-pavgpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-pavgpool-minmax-test COMMAND f32-pavgpool-minmax-test)
- 
-@@ -2034,259 +2001,259 @@
- 
-   ADD_EXECUTABLE(f32-prelu-test test/f32-prelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-prelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-prelu-test COMMAND f32-prelu-test)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddexpminusmax-test COMMAND f32-raddexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddextexp-test COMMAND f32-raddextexp-test)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-raddstoreexpminusmax-test COMMAND f32-raddstoreexpminusmax-test)
- 
-   ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-rmax-test COMMAND f32-rmax-test)
- 
-   ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-spmm-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-spmm-minmax-test COMMAND f32-spmm-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vabs-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vabs-test COMMAND f32-vabs-test)
- 
-   ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-test COMMAND f32-vadd-test)
- 
-   ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vadd-minmax-test COMMAND f32-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vadd-relu-test test/f32-vadd-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vadd-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vadd-relu-test COMMAND f32-vadd-relu-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-test COMMAND f32-vaddc-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vaddc-minmax-test COMMAND f32-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vaddc-relu-test test/f32-vaddc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vaddc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vaddc-relu-test COMMAND f32-vaddc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE test gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vclamp-test COMMAND f32-vclamp-test)
- 
-   ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vhswish-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vhswish-test COMMAND f32-vhswish-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-test COMMAND f32-vdiv-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdiv-minmax-test COMMAND f32-vdiv-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdiv-relu-test test/f32-vdiv-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdiv-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdiv-relu-test COMMAND f32-vdiv-relu-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-test COMMAND f32-vdivc-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vdivc-minmax-test COMMAND f32-vdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vdivc-relu-test test/f32-vdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vdivc-relu-test COMMAND f32-vdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-test COMMAND f32-vrdivc-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrdivc-minmax-test COMMAND f32-vrdivc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrdivc-relu-test test/f32-vrdivc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrdivc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrdivc-relu-test COMMAND f32-vrdivc-relu-test)
- 
-   ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-velu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-velu-test COMMAND f32-velu-test)
- 
-   ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vlrelu-test COMMAND f32-vlrelu-test)
- 
-   ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmax-test COMMAND f32-vmax-test)
- 
-   ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmaxc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmaxc-test COMMAND f32-vmaxc-test)
- 
-   ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmin-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmin-test COMMAND f32-vmin-test)
- 
-   ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vminc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vminc-test COMMAND f32-vminc-test)
- 
-   ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-test COMMAND f32-vmul-test)
- 
-   ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-minmax-test COMMAND f32-vmul-minmax-test microparams-init)
- 
-   ADD_EXECUTABLE(f32-vmul-relu-test test/f32-vmul-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmul-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmul-relu-test COMMAND f32-vmul-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-test COMMAND f32-vmulc-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-minmax-test COMMAND f32-vmulc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vmulc-relu-test test/f32-vmulc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulc-relu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vmulc-relu-test COMMAND f32-vmulc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vmulcaddc-minmax-test test/f32-vmulcaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vmulcaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME f32-vmulcaddc-minmax-test COMMAND f32-vmulcaddc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vneg-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vneg-test COMMAND f32-vneg-test)
- 
-   ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrelu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrelu-test COMMAND f32-vrelu-test)
- 
-   ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndne-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndne-test COMMAND f32-vrndne-test)
- 
-   ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndz-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndz-test COMMAND f32-vrndz-test)
- 
-   ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndu-test COMMAND f32-vrndu-test)
- 
-   ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrndd-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrndd-test COMMAND f32-vrndd-test)
- 
-@@ -2304,91 +2271,91 @@
- 
-   ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsigmoid-test COMMAND f32-vsigmoid-test)
- 
-   ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqr-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqr-test COMMAND f32-vsqr-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiff-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiff-test COMMAND f32-vsqrdiff-test)
- 
-   ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrdiffc-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrdiffc-test COMMAND f32-vsqrdiffc-test)
- 
-   ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsqrt-test COMMAND f32-vsqrt-test)
- 
-   ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-test COMMAND f32-vsub-test)
- 
-   ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsub-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsub-minmax-test COMMAND f32-vsub-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsub-relu-test test/f32-vsub-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(f32-vsub-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsub-relu-test COMMAND f32-vsub-relu-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-test COMMAND f32-vsubc-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vsubc-minmax-test COMMAND f32-vsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vsubc-relu-test test/f32-vsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vsubc-relu-test COMMAND f32-vsubc-relu-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-test COMMAND f32-vrsubc-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME f32-vrsubc-minmax-test COMMAND f32-vrsubc-minmax-test)
- 
-   ADD_EXECUTABLE(f32-vrsubc-relu-test test/f32-vrsubc-relu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-vrsubc-relu-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME f32-vrsubc-relu-test COMMAND f32-vrsubc-relu-test)
- 
-   ADD_EXECUTABLE(qc8-dwconv-unipass-minmax-fp32-test test/qc8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qc8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qc8-dwconv-unipass-minmax-fp32-test COMMAND qc8-dwconv-unipass-minmax-fp32-test)
- 
-@@ -2406,31 +2373,31 @@
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-fp32-test test/qs8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-fp32-test COMMAND qs8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-dwconv-unipass-minmax-rndnu-test test/qs8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qs8-dwconv-unipass-minmax-rndnu-test COMMAND qs8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-f32-vcvt-test COMMAND qs8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-fp32-test test/qs8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-fp32-test COMMAND qs8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-gavgpool-minmax-rndnu-test test/qs8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-gavgpool-minmax-rndnu-test COMMAND qs8-gavgpool-minmax-rndnu-test)
- 
-@@ -2461,81 +2428,81 @@
-   ADD_EXECUTABLE(qs8-requantization-test test/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qs8-requantization-test COMMAND qs8-requantization-test)
- 
-   ADD_EXECUTABLE(qs8-vadd-minmax-test test/qs8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vadd-minmax-test COMMAND qs8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vaddc-minmax-test test/qs8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vaddc-minmax-test COMMAND qs8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qs8-vcvt-test test/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vcvt-test COMMAND qs8-vcvt-test)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-test test/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vlrelu-test COMMAND qs8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qs8-vmul-minmax-fp32-test test/qs8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmul-minmax-fp32-test COMMAND qs8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qs8-vmulc-minmax-fp32-test test/qs8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qs8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qs8-vmulc-minmax-fp32-test COMMAND qs8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-avgpool-minmax-fp32-test test/qu8-avgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-avgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-avgpool-minmax-fp32-test COMMAND qu8-avgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-fp32-test test/qu8-dwconv-unipass-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-fp32-test COMMAND qu8-dwconv-unipass-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-dwconv-unipass-minmax-rndnu-test test/qu8-dwconv-unipass-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-dwconv-unipass-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init packing)
-   ADD_TEST(NAME qu8-dwconv-unipass-minmax-rndnu-test COMMAND qu8-dwconv-unipass-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-test test/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-f32-vcvt-test COMMAND qu8-f32-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-fp32-test test/qu8-gavgpool-minmax-fp32.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-fp32-test COMMAND qu8-gavgpool-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-gavgpool-minmax-rndnu-test test/qu8-gavgpool-minmax-rndnu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-gavgpool-minmax-rndnu-test COMMAND qu8-gavgpool-minmax-rndnu-test)
- 
-@@ -2566,161 +2533,161 @@
-   ADD_EXECUTABLE(qu8-requantization-test test/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-requantization-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME qu8-requantization-test COMMAND qu8-requantization-test)
- 
-   ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(qu8-vadd-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vadd-minmax-test COMMAND qu8-vadd-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vaddc-minmax-test test/qu8-vaddc-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vaddc-minmax-test COMMAND qu8-vaddc-minmax-test)
- 
-   ADD_EXECUTABLE(qu8-vcvt-test test/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vcvt-test COMMAND qu8-vcvt-test)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-test test/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vlrelu-test COMMAND qu8-vlrelu-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-fp32-test test/qu8-vmul-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-fp32-test COMMAND qu8-vmul-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmul-minmax-rndnu-test test/qu8-vmul-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmul-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmul-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmul-minmax-rndnu-test COMMAND qu8-vmul-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-fp32-test test/qu8-vmulc-minmax-fp32.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-fp32-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-fp32-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-fp32-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-fp32-test COMMAND qu8-vmulc-minmax-fp32-test)
- 
-   ADD_EXECUTABLE(qu8-vmulc-minmax-rndnu-test test/qu8-vmulc-minmax-rndnu.cc)
-   SET_TARGET_PROPERTIES(qu8-vmulc-minmax-rndnu-test PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-minmax-rndnu-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-minmax-rndnu-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME qu8-vmulc-minmax-rndnu-test COMMAND qu8-vmulc-minmax-rndnu-test)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-test test/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-rmaxabs-test COMMAND s16-rmaxabs-test)
- 
-   ADD_EXECUTABLE(s16-window-test test/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s16-window-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s16-window-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s16-window-test COMMAND s16-window-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-test test/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-accumulate-test COMMAND u32-filterbank-accumulate-test)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-test test/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-filterbank-subtract-test COMMAND u32-filterbank-subtract-test)
- 
-   ADD_EXECUTABLE(u32-vlog-test test/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-vlog-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u32-vlog-test COMMAND u32-vlog-test)
- 
-   ADD_EXECUTABLE(i16-vlshift-test test/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(i16-vlshift-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME i16-vlshift-test COMMAND i16-vlshift-test)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-test test/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-vsquareabs-test COMMAND cs16-vsquareabs-test)
- 
-   ADD_EXECUTABLE(cs16-bfly4-test test/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-bfly4-test COMMAND cs16-bfly4-test)
- 
-   ADD_EXECUTABLE(cs16-fftr-test test/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(cs16-fftr-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME cs16-fftr-test COMMAND cs16-fftr-test)
- 
-   ADD_EXECUTABLE(s8-ibilinear-test test/s8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME s8-ibilinear-test COMMAND s8-ibilinear-test)
- 
-   ADD_EXECUTABLE(s8-maxpool-minmax-test test/s8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-maxpool-minmax-test COMMAND s8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(s8-vclamp-test test/s8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(s8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(s8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME s8-vclamp-test COMMAND s8-vclamp-test)
- 
-   ADD_EXECUTABLE(u8-lut32norm-test test/u8-lut32norm.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-lut32norm-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-lut32norm-test COMMAND u8-lut32norm-test)
- 
-   ADD_EXECUTABLE(u8-ibilinear-test test/u8-ibilinear.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-ibilinear-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-ibilinear-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-ibilinear-test COMMAND u8-ibilinear-test)
- 
-   ADD_EXECUTABLE(u8-maxpool-minmax-test test/u8-maxpool-minmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE fp16 pthreadpool gtest gtest_main microparams-init)
-+  TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE gtest gtest_main microparams-init)
-   TARGET_LINK_LIBRARIES(u8-maxpool-minmax-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-maxpool-minmax-test COMMAND u8-maxpool-minmax-test)
- 
-   ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-rmax-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME u8-rmax-test COMMAND u8-rmax-test)
- 
-   ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc)
-   TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME u8-vclamp-test COMMAND u8-vclamp-test)
- 
-@@ -2762,25 +2729,25 @@
- 
-   ADD_EXECUTABLE(x32-zip-test test/x32-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x32-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x32-zip-test COMMAND x32-zip-test)
- 
-   ADD_EXECUTABLE(x64-transpose-test test/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x64-transpose-test PRIVATE hardware-config logging microkernels-all microparams-init)
-   ADD_TEST(NAME x64-transpose-test COMMAND x64-transpose-test)
- 
-   ADD_EXECUTABLE(x8-lut-test test/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-lut-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-lut-test COMMAND x8-lut-test)
- 
-   ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-zip-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(x8-zip-test PRIVATE hardware-config logging microkernels-all)
-   ADD_TEST(NAME x8-zip-test COMMAND x8-zip-test)
- 
-@@ -2842,12 +2809,12 @@
- 
-   ADD_EXECUTABLE(packing-test test/packing.cc)
-   TARGET_INCLUDE_DIRECTORIES(packing-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(packing-test PRIVATE fp16 gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(packing-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(packing-test PRIVATE XNNPACK microkernel-utils operator-utils packing)
- 
-   ADD_EXECUTABLE(indirection-test test/indirection.cc)
-   TARGET_INCLUDE_DIRECTORIES(indirection-test PRIVATE include src)
--  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main pthreadpool)
-+  TARGET_LINK_LIBRARIES(indirection-test PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(indirection-test PRIVATE XNNPACK indirection)
- ENDIF()
- 
-@@ -2864,7 +2831,7 @@
-   ADD_LIBRARY(bench-utils STATIC bench/utils.cc)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PRIVATE .)
-   TARGET_INCLUDE_DIRECTORIES(bench-utils PUBLIC include src)
--  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(bench-utils PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(bench-utils PRIVATE hardware-config)
-   IF(XNNPACK_BUILD_LIBRARY)
-     TARGET_LINK_LIBRARIES(bench-utils PRIVATE logging memory)
-@@ -2873,134 +2840,134 @@
-   # ---[ Build accuracy microbenchmarks
-   ADD_EXECUTABLE(f16-exp-ulp-eval eval/f16-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expminus-ulp-eval eval/f16-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-expm1minus-ulp-eval eval/f16-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sigmoid-ulp-eval eval/f16-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-sqrt-ulp-eval eval/f16-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f16-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-ulp-eval eval/f32-exp-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-exp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-ulp-eval eval/f32-expminus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expminus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-ulp-eval eval/f32-expm1minus-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-extexp-ulp-eval eval/f32-extexp-ulp.cc)
-   SET_TARGET_PROPERTIES(f32-extexp-ulp-eval PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(f32-extexp-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-extexp-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sigmoid-ulp-eval eval/f32-sigmoid-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sigmoid-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sigmoid-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-sqrt-ulp-eval eval/f32-sqrt-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-sqrt-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-sqrt-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f32-tanh-ulp-eval eval/f32-tanh-ulp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-tanh-ulp-eval PRIVATE . src)
--  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(f32-tanh-ulp-eval PRIVATE bench-utils microkernels-all)
- 
-   # ---[ Build accuracy tests
-   ADD_EXECUTABLE(f16-sqrt-eval eval/f16-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-cvt-eval eval/f16-f32-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f16-f32-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-f16-cvt-eval eval/f32-f16-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-f16-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qs8-cvt-eval eval/f32-qs8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qs8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-qu8-cvt-eval eval/f32-qu8-cvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-cvt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-qu8-cvt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-exp-eval eval/f32-exp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-exp-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expm1minus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-expminus-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundne-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundd-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundu-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(f32-roundz-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u32-sqrt-eval eval/u32-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u32-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   ADD_EXECUTABLE(u64-sqrt-eval eval/u64-sqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-sqrt-eval PRIVATE include src)
--  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE gtest gtest_main)
-   TARGET_LINK_LIBRARIES(u64-sqrt-eval PRIVATE hardware-config logging microkernels-all)
- 
-   IF(XNNPACK_BUILD_LIBRARY)
-@@ -3030,7 +2997,7 @@
-       models/qu8-mobilenet-v2.cc)
-     SET_TARGET_PROPERTIES(bench-models PROPERTIES CXX_EXTENSIONS YES)
-     TARGET_INCLUDE_DIRECTORIES(bench-models PRIVATE .)
--    TARGET_LINK_LIBRARIES(bench-models PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(bench-models PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(bench-models PRIVATE XNNPACK bench-utils)
- 
-     ADD_EXECUTABLE(end2end-bench bench/end2end.cc)
-@@ -3039,7 +3006,7 @@
- 
-     ADD_EXECUTABLE(f16-gemm-e2e-bench bench/f16-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f16-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f16-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(f32-dwconv-e2e-bench bench/f32-dwconv-e2e.cc)
-@@ -3049,33 +3016,33 @@
- 
-     ADD_EXECUTABLE(f32-gemm-e2e-bench bench/f32-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(f32-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(f32-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-dwconv-e2e-bench bench/qs8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qs8-gemm-e2e-bench bench/qs8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qs8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qs8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-gemm-e2e-bench bench/qu8-gemm-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-gemm-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-gemm-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     ADD_EXECUTABLE(qu8-dwconv-e2e-bench bench/qu8-dwconv-e2e.cc)
-     TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-e2e-bench PRIVATE . src)
--    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE fp16 benchmark)
-+    TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE benchmark)
-     TARGET_LINK_LIBRARIES(qu8-dwconv-e2e-bench PRIVATE XNNPACK bench-models bench-utils hardware-config logging microkernels-all microparams-init)
- 
-     # ---[ Build operator-level microbenchmarks
-     ADD_EXECUTABLE(abs-bench bench/abs.cc)
-     TARGET_INCLUDE_DIRECTORIES(abs-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(abs-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(average-pooling-bench bench/average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(average-pooling-bench PRIVATE .)
-@@ -3083,11 +3050,11 @@
- 
-     ADD_EXECUTABLE(bankers-rounding-bench bench/bankers-rounding.cc)
-     TARGET_INCLUDE_DIRECTORIES(bankers-rounding-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(bankers-rounding-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(ceiling-bench bench/ceiling.cc)
-     TARGET_INCLUDE_DIRECTORIES(ceiling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(ceiling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(channel-shuffle-bench bench/channel-shuffle.cc)
-     TARGET_INCLUDE_DIRECTORIES(channel-shuffle-bench PRIVATE .)
-@@ -3095,11 +3062,11 @@
- 
-     ADD_EXECUTABLE(convert-bench bench/convert.cc)
-     TARGET_INCLUDE_DIRECTORIES(convert-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convert-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(convolution-bench bench/convolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(convolution-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(convolution-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(deconvolution-bench bench/deconvolution.cc)
-     TARGET_INCLUDE_DIRECTORIES(deconvolution-bench PRIVATE .)
-@@ -3107,23 +3074,23 @@
- 
-     ADD_EXECUTABLE(elu-bench bench/elu.cc)
-     TARGET_INCLUDE_DIRECTORIES(elu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(elu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(floor-bench bench/floor.cc)
-     TARGET_INCLUDE_DIRECTORIES(floor-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(floor-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(global-average-pooling-bench bench/global-average-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(global-average-pooling-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(global-average-pooling-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(hardswish-bench bench/hardswish.cc)
-     TARGET_INCLUDE_DIRECTORIES(hardswish-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(hardswish-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(leaky-relu-bench bench/leaky-relu.cc)
-     TARGET_INCLUDE_DIRECTORIES(leaky-relu-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(leaky-relu-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(max-pooling-bench bench/max-pooling.cc)
-     TARGET_INCLUDE_DIRECTORIES(max-pooling-bench PRIVATE .)
-@@ -3139,7 +3106,7 @@
- 
-     ADD_EXECUTABLE(sigmoid-bench bench/sigmoid.cc)
-     TARGET_INCLUDE_DIRECTORIES(sigmoid-bench PRIVATE .)
--    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK fp16 benchmark bench-utils)
-+    TARGET_LINK_LIBRARIES(sigmoid-bench PRIVATE XNNPACK benchmark bench-utils)
- 
-     ADD_EXECUTABLE(softmax-bench bench/softmax.cc)
-     TARGET_INCLUDE_DIRECTORIES(softmax-bench PRIVATE .)
-@@ -3161,378 +3128,378 @@
-   # ---[ Build microkernel-level microbenchmarks
-   ADD_EXECUTABLE(bf16-gemm-bench bench/bf16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(bf16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(bf16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-conv-hwc2chw-bench bench/f16-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv-bench bench/f16-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-dwconv2d-chw-bench bench/f16-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-gavgpool-cw-bench bench/f16-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-gemm-bench bench/f16-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-igemm-bench bench/f16-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-igemm-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f16-raddstoreexpminusmax-bench bench/f16-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-spmm-bench bench/f16-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-velu-bench bench/f16-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsigmoid-bench bench/f16-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f16-vsqrt-bench bench/f16-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-vsqrt-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(f16-f32-vcvt-bench bench/f16-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f16-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark fp16 pthreadpool)
-+  TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f16-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-conv-hwc-bench bench/f32-conv-hwc.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-conv-hwc2chw-bench bench/f32-conv-hwc2chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-conv-hwc2chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv-bench bench/f32-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernel-utils microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-dwconv2d-chw-bench bench/f32-dwconv2d-chw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-dwconv2d-chw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-f16-vcvt-bench bench/f32-f16-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-f16-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-f16-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gavgpool-cw-bench bench/f32-gavgpool-cw.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gavgpool-cw-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-gemm-bench bench/f32-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-gemm-bench PRIVATE jit bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-igemm-bench bench/f32-igemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-igemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-igemm-bench PRIVATE jit bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-im2col-gemm-bench bench/f32-im2col-gemm.cc src/im2col.c)
-   TARGET_INCLUDE_DIRECTORIES(f32-im2col-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-im2col-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(f32-qs8-vcvt-bench bench/f32-qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-qu8-vcvt-bench bench/f32-qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddstoreexpminusmax-bench bench/f32-raddstoreexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddstoreexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddexpminusmax-bench bench/f32-raddexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-raddextexp-bench bench/f32-raddextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-raddextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleexpminusmax-bench bench/f32-vscaleexpminusmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleexpminusmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vscaleextexp-bench bench/f32-vscaleextexp.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vscaleextexp-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-rmax-bench bench/f32-rmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-rmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-rmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-spmm-bench bench/f32-spmm.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-spmm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-spmm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-softmax-bench bench/f32-softmax.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-softmax-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-softmax-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-velu-bench bench/f32-velu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-velu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-velu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vhswish-bench bench/f32-vhswish.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vhswish-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vhswish-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vlrelu-bench bench/f32-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vrelu-bench bench/f32-vrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsigmoid-bench bench/f32-vsigmoid.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsigmoid-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(f32-vsqrt-bench bench/f32-vsqrt.cc)
-   TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(f32-vsqrt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-dwconv-bench bench/qs8-dwconv.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-dwconv-bench PRIVATE bench-utils indirection hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-f32-vcvt-bench bench/qs8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-gemm-bench bench/qs8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark pthreadpool jit microparams-init)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE benchmark jit microparams-init)
-   TARGET_LINK_LIBRARIES(qs8-gemm-bench PRIVATE bench-utils jit hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qs8-requantization-bench bench/qs8-requantization.cc)
-   SET_TARGET_PROPERTIES(qs8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qs8-vadd-bench bench/qs8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vaddc-bench bench/qs8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vcvt-bench bench/qs8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vlrelu-bench bench/qs8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmul-bench bench/qs8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qs8-vmulc-bench bench/qs8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qs8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qs8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-f32-vcvt-bench bench/qu8-f32-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-f32-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-f32-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-gemm-bench bench/qu8-gemm.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-gemm-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-gemm-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init packing)
- 
-   ADD_EXECUTABLE(qu8-requantization-bench bench/qu8-requantization.cc)
-   SET_TARGET_PROPERTIES(qu8-requantization-bench PROPERTIES CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-requantization-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-requantization-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(qu8-vadd-bench bench/qu8-vadd.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vadd-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vadd-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vaddc-bench bench/qu8-vaddc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vaddc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vcvt-bench bench/qu8-vcvt.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vcvt-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vcvt-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vlrelu-bench bench/qu8-vlrelu.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vlrelu-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vlrelu-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmul-bench bench/qu8-vmul.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmul-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmul-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(qu8-vmulc-bench bench/qu8-vmulc.cc)
-   TARGET_INCLUDE_DIRECTORIES(qu8-vmulc-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(qu8-vmulc-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(rounding-bench bench/rounding.cc)
-   TARGET_INCLUDE_DIRECTORIES(rounding-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo pthreadpool)
-+  TARGET_LINK_LIBRARIES(rounding-bench PRIVATE benchmark cpuinfo)
-   TARGET_LINK_LIBRARIES(rounding-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(s16-rmaxabs-bench bench/s16-rmaxabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-rmaxabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-rmaxabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(s16-window-bench bench/s16-window.cc)
-   TARGET_INCLUDE_DIRECTORIES(s16-window-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(s16-window-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-accumulate-bench bench/u32-filterbank-accumulate.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-accumulate-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-accumulate-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-filterbank-subtract-bench bench/u32-filterbank-subtract.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-filterbank-subtract-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-filterbank-subtract-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u32-vlog-bench bench/u32-vlog.cc)
-   TARGET_INCLUDE_DIRECTORIES(u32-vlog-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u32-vlog-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(u64-u32-vsqrtshift-bench bench/u64-u32-vsqrtshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(u64-u32-vsqrtshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(u64-u32-vsqrtshift-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(i16-vlshift-bench bench/i16-vlshift.cc)
-   TARGET_INCLUDE_DIRECTORIES(i16-vlshift-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(i16-vlshift-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-vsquareabs-bench bench/cs16-vsquareabs.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-vsquareabs-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-vsquareabs-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-bfly4-bench bench/cs16-bfly4.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-bfly4-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-bfly4-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(cs16-fftr-bench bench/cs16-fftr.cc)
-   TARGET_INCLUDE_DIRECTORIES(cs16-fftr-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(cs16-fftr-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(xx-transpose-bench bench/xx-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(xx-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(xx-transpose-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-lut-bench bench/x8-lut.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-lut-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-lut-bench PRIVATE bench-utils microkernels-all)
- 
-   ADD_EXECUTABLE(x8-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x8-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x8-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x16-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x16-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x16-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x24-transpose-bench bench/x16-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x24-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x24-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x32-transpose-bench bench/x32-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x32-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x32-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- 
-   ADD_EXECUTABLE(x64-transpose-bench bench/x64-transpose.cc)
-   TARGET_INCLUDE_DIRECTORIES(x64-transpose-bench PRIVATE . include src)
--  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark pthreadpool)
-+  TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE benchmark)
-   TARGET_LINK_LIBRARIES(x64-transpose-bench PRIVATE bench-utils hardware-config logging microkernels-all microparams-init)
- ENDIF()
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 25/32] gnu: Add qnnpack-pytorch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (23 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
                         ` (6 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

This is an internal fork of QNNPACK in the PyTorch source tree.

* gnu/packages/machine-learning.scm (%python-pytorch-version): New variable.
(%python-pytorch-src): New variable.
(qnnpack-pytorch): New variable.
---
 gnu/packages/machine-learning.scm | 127 ++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 375fd77a28..1be598e1e7 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4313,6 +4313,133 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define %python-pytorch-version "2.2.1")
+
+(define %python-pytorch-src
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-version))))
+    (file-name (git-file-name "python-pytorch" %python-pytorch-version))
+    (sha256
+     (base32
+      "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (modules '((guix build utils)))
+    (snippet
+     '(begin
+        ;; Bundled or unused code
+        (for-each
+         (lambda (dir)
+           (when (file-exists? dir)
+             (delete-file-recursively dir)))
+         '("android"
+           "aten/src/ATen/native/cuda/cutlass_extensions"
+           "aten/src/ATen/native/quantized/cpu/qnnpack"
+           "caffe2/mobile/contrib/libopencl-stub"
+           "caffe2/mobile/contrib/libvulkan-stub"
+           "third_party"))
+
+        ;; Autogenerated files
+        (for-each
+         delete-file
+         '("aten/src/ATen/nnapi/nnapi_wrapper.cpp"
+           "aten/src/ATen/nnapi/nnapi_wrapper.h"
+           "caffe2/mobile/contrib/ios/mpscnn/mpscnn_kernels.h"
+           "caffe2/proto/caffe2_legacy_pb2.pyi"
+           "caffe2/proto/caffe2_pb2.pyi"
+           "caffe2/proto/hsm_pb2.pyi"
+           "caffe2/proto/metanet_pb2.pyi"
+           "caffe2/proto/predictor_consts_pb2.pyi"
+           "caffe2/proto/prof_dag_pb2.pyi"
+           "caffe2/proto/torch_pb2.pyi"
+           ;; These files contain just lists of floating point values and
+           ;; might be as well hand-written.
+           ;; "test/cpp/api/init_baseline.h"
+           ;; "test/cpp/api/optim_baseline.h"
+           "test/mobile/test_upgrader_bytecode_table_example.cpp"
+           "torch/csrc/jit/mobile/upgrader_mobile.cpp"
+           "torch/csrc/jit/runtime/decomposition_registry_util.cpp"
+           "torch/csrc/jit/runtime/serialized_shape_function_registry.cpp"
+           "torch/csrc/jit/tensorexpr/external_functions_codegen.cpp"
+           "torch/csrc/jit/serialization/mobile_bytecode_generated.h"))
+        (delete-file-recursively ".github")
+        (for-each
+         (lambda (dir)
+           (for-each
+            delete-file
+            (find-files dir "\\.cu$")))
+         '("aten/src/ATen/native/transformers/cuda/flash_attn/kernels"
+           "aten/src/ATen/native/transformers/cuda/mem_eff_attention/kernels"))))))
+
+(define-public qnnpack-pytorch
+  (package
+    (inherit qnnpack)
+    (name "qnnpack-pytorch")
+    (version (string-append "pytorch-" %python-pytorch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        '(begin
+           (rename-file "aten/src/ATen/native/quantized/cpu/qnnpack"
+                        "../qnnpack")
+           (let ((outdir (getcwd)))
+             (chdir "..")
+             (rename-file outdir "dummy")
+             (rename-file "qnnpack" outdir)
+             (chdir outdir)
+             (delete-file-recursively "deps"))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qnnpack)
+       ((#:phases phases #~%standard-phases)
+        #~(modify-phases %standard-phases
+            (add-after 'unpack 'patch-cmake
+              (lambda _
+                (substitute* "CMakeLists.txt"
+                  (("project\\(.*" orig)
+                   (apply
+                    string-append
+                    orig "\n"
+                    (map (lambda (name)
+                           (string-append
+                            "option(" name " \"\" ON)\n"))
+                         '("USE_SYSTEM_CPUINFO" "USE_SYSTEM_FP16" "USE_SYSTEM_FXDIV"
+                           "USE_SYSTEM_PSIMD" "USE_SYSTEM_PTHREADPOOL"))))
+                  (("if.*SOURCE_DIR.*")
+                   "if(FALSE)\n")
+                  (("if\\(NOT TARGET (clog|gtest|benchmark).*")
+                   "if(FALSE)\n")
+                  (("target_link_libraries.*(fxdiv|psimd|fp16)\\).*")
+                   "")
+                  (("(target_link_libraries.*) fp16 (.*)" _ before after)
+                   (string-append before " " after)))))
+            (add-after 'unpack 'fix-cstring-include
+              (lambda _
+                (substitute* "include/pack_block_sparse.h"
+                  (("#include.*<vector>.*" orig)
+                   (string-append orig "\n#include <cstring>\n")))))
+            (add-after 'install 'install-missing-headers
+              (lambda _
+                (for-each
+                 (lambda (name)
+                   (install-file (string-append "../source/include/" name)
+                                 (string-append #$output "/include")))
+                 '("pack_block_sparse.h"
+                   "pytorch_qnnpack.h"
+                   "qnnpack_func.h"))
+                (copy-recursively
+                 "../source/src/qnnpack"
+                 (string-append #$output "/include/qnnpack"))))))
+       ;; Some tests occasionally fail on i686 due to floating point rounding.
+       ((#:tests? _ #t)
+        (not (string-prefix? "i686" (or (%current-target-system)
+                                        (%current-system)))))))))
+
 ;; Please also update python-torchvision when updating this package.
 (define-public python-pytorch
   (package
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (24 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 25/32] gnu: Add qnnpack-pytorch David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 27/32] gnu: Add python-pytorch-avx David Elsing
                         ` (5 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

Autogenerated files are also regenerated. The tests can be run, but are
disabled, as they require a long time.

* gnu/packages/machine-learning.scm (python-pytorch): Update to 2.2.1.
[version]: Use %python-pytorch-version.
[source]: Use %python-pytorch-src.
[arguments]: Remove 'make-things-writable phase.  Add 'cmake-patches,
'disable-avx-dependencies, 'set-max-jobs, 'codegen1, 'codegen2, 'build2,
'install2 phases. Adjust 'use-system-libraries and 'check phases.
[native-inputs]: Add doxygen, ideep-pytorch, pocketfft-cpp, python-expecttest,
python-pytest-flakefinder, python-pytest-rerunfailures-13,
python-pytest-shard, python-pytest-xdist, python-hypothesis,
python-types-dataclasses, python-typing-extensions-4.10 and valgrind.
[inputs]: Add asmjit, clog, flatbuffers-next, foxi, fxdiv, libuv,
miniz-for-pytorch, qnnpack, qnnpack-pytorch and oneapi-dnnl. Use nnpack,
oneapi-dnnl, qnnpack, qnnpack-pytorch and xnnpack only for supported systems.
[propagated-inputs]: Add python-filelock, python-fsspec, python-jinja2,
python-networkx, python-opt-einsum, python-optree, python-packaging,
python-psutil and python-sympy. Remove python-cffi and python-six. Use cpuinfo
only for supported systems.
(%python-pytorch-src)[source]: Add patches.
(python-pytorch2): Remove variable.
* gnu/packages/patches/python-pytorch-runpath.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-system-libraries.patch: Adjust patch.
* gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch: Remove file.
* gnu/packages/patches/python-pytorch-fix-codegen.patch: New file.
* gnu/packages/patches/python-pytorch-without-kineto: New file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   3 +-
 gnu/packages/machine-learning.scm             | 427 ++++++++++--------
 ...ython-pytorch-1.9.0-system-libraries.patch | 139 ------
 .../patches/python-pytorch-fix-codegen.patch  | 167 +++++++
 .../patches/python-pytorch-runpath.patch      |  19 +-
 .../python-pytorch-system-libraries.patch     | 317 +++++++++++--
 .../python-pytorch-without-kineto.patch       |  60 +++
 7 files changed, 772 insertions(+), 360 deletions(-)
 delete mode 100644 gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
 create mode 100644 gnu/packages/patches/python-pytorch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-without-kineto.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index adcb1be9b7..c7dfe1b873 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1930,9 +1930,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
   %D%/packages/patches/python-pyan3-fix-positional-arguments.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
+  %D%/packages/patches/python-pytorch-fix-codegen.patch		\
   %D%/packages/patches/python-pytorch-runpath.patch		\
   %D%/packages/patches/python-pytorch-system-libraries.patch	\
-  %D%/packages/patches/python-pytorch-1.9.0-system-libraries.patch \
+  %D%/packages/patches/python-pytorch-without-kineto.patch	\
   %D%/packages/patches/python-robotframework-atest.patch	\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 1be598e1e7..bcd1c26838 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -105,6 +105,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages parallel)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -123,6 +124,7 @@ (define-module (gnu packages machine-learning)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
@@ -4325,6 +4327,13 @@ (define %python-pytorch-src
     (sha256
      (base32
       "03mm0pwwb5lxdsmmiw3cch9fijgjw81kmmc4ln9rlyazkm7l1r48"))
+    (patches (search-patches "python-pytorch-system-libraries.patch"
+                             "python-pytorch-runpath.patch"
+                             "python-pytorch-without-kineto.patch"
+                             ;; Some autogeneration scripts depend on the
+                             ;; compile PyTorch library. Therefore, we create
+                             ;; dummy versions which are regenerated later.
+                             "python-pytorch-fix-codegen.patch"))
     (modules '((guix build utils)))
     (snippet
      '(begin
@@ -4444,135 +4453,250 @@ (define-public qnnpack-pytorch
 (define-public python-pytorch
   (package
     (name "python-pytorch")
-    (version "1.13.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "17yxjzwp4zp75fz7czgz9acijzw7dpyqcza50v8y1x7hfg2gw369"))
-              (patches (search-patches "python-pytorch-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-version)
+    (source %python-pytorch-src)
     (build-system python-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'use-system-libraries
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
-                      ;; want to use "system libraries" instead of the bundled
-                      ;; ones.
-                      (setenv "USE_SYSTEM_LIBS" "1")
-
-                      (substitute* "cmake/Dependencies.cmake"
-                        (("if\\(USE_SYSTEM_BIND11\\)")
-                         "if(TRUE)"))
-
-                      ;; XXX: Disable that for simplicity for now.
-                      (setenv "USE_FBGEMM" "0")))
-                  (add-before 'build 'make-things-writable
-                    (lambda _
-                      ;; The 'build_caffe2' function in
-                      ;; 'tools/build_pytorch_libs.py', called from the
-                      ;; top-level 'setup.py', needs write access to this
-                      ;; directory.
-                      (for-each make-file-writable
-                                (find-files "caffe2/proto" "."
-                                            #:directories? #t))))
-                  (replace 'check
-                    (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-                      ;; Run the test suite following the instructions in
-                      ;; 'CONTRIBUTING.md'.  XXX: Unfortunately this doesn't
-                      ;; work, unless you set GUIX_PYTHONPATH presumably.
-                      (when tests?
-                        (add-installed-pythonpath inputs outputs)
-                        (invoke "python" "test/run_test.py"))))
-                  (add-after 'install 'remove-test-executables
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; Remove test executables, but keep other executables
-                      ;; such as 'torch_shm_manager' and and .so files such as
-                      ;; 'libtorch_global_deps.so'.
-                      (let ((python-site (site-packages inputs outputs)))
-                        (for-each delete-file
-                                  (find-files python-site
-                                              "(^test_cpp_rpc|_test)$")))))
-                  (add-after 'install 'remove-caffe2-onnx-scripts
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (bin (string-append out "/bin")))
-                        ;; Remove 'convert-caffe2-to-onnx' and
-                        ;; 'convert-onnx-to-caffe2': they seem to be
-                        ;; deprecated and they cause a failure of the
-                        ;; 'sanity-check' phase:
-                        ;;
-                        ;; ImportError: cannot import name 'metanet_pb2' from partially initialized module 'caffe2.proto' (most likely due to a circular import)
-                        (for-each delete-file
-                                  (find-files bin "^convert-.*caffe2"))
-
-                        (substitute* (find-files out "^entry_points\\.txt$")
-                          (("^convert-.*" all)
-                           (string-append "# " all "\n")))))))
-
-       ;; XXX: Tests attempt to download data such as
-       ;; <https://raw.githubusercontent.com/pytorch/test-infra/master/stats/slow-tests.json>.
-       ;; We're also missing some Python modules, such as expecttest.
-       #:tests? #f))
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'cmake-patches
+            (lambda _
+              (substitute* "cmake/Dependencies.cmake"
+                (("#POCKETFFT_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-native-input "pocketfft-cpp") "/include"))
+                (("#FP16_INCLUDE_DIR")
+                 (string-append
+                  #$(this-package-input "fp16") "/include")))))
+          (add-before 'build 'use-system-libraries
+            (lambda _
+              (substitute* '("caffe2/serialize/crc.cc"
+                             "caffe2/serialize/inline_container.cc")
+                (("\"miniz\\.h\"") "<miniz/miniz.h>"))
+              (substitute* "aten/src/ATen/native/vulkan/api/Allocator.h"
+                (("<include/vk_mem_alloc.h>")
+                 "<vk_mem_alloc.h>"))
+              ;; For Vulkan
+              (substitute* "CMakeLists.txt"
+                (("append_cxx_flag.*-Werror=(return-type|range-loop-construct).*") ""))
+              (substitute*
+                  (cons*
+                   "torch/csrc/Module.cpp"
+                   (map
+                    (lambda (name)
+                      (string-append
+                       "torch/utils/benchmark/utils/valgrind_wrapper/"
+                       name))
+                    '("compat_bindings.cpp" "timer_callgrind_template.cpp")))
+                (("<callgrind.h>") "<valgrind/callgrind.h>"))
+              (setenv "USE_FFMPEG" "1")
+              (setenv "USE_VULKAN" "1")
+              (setenv "USE_OPENCV" "1")
+              ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
+              ;; want to use "system libraries" instead of the bundled
+              ;; ones.
+              (setenv "USE_SYSTEM_LIBS" "1")
+              ;; For oneDNN
+              (setenv "USE_MKLDNN" "1")
+              ;; Only works with CUPTI
+              (setenv "USE_KINETO" "0")
+              ;; Prevent CMake error by disabling explicitely
+              (setenv "USE_ITT" "0")
+              ;; Disable on unsupported systems
+              (if #$(not (member
+                          (or (%current-target-system)
+                              (%current-system))
+                          (package-transitive-supported-systems qnnpack)))
+                  (setenv "USE_QNNPACK" "0")
+                  (setenv "USE_PYTORCH_QNNPACK" "0"))))
+          ;; PyTorch is still built with AVX2 and AVX-512 support selected at
+          ;; runtime, but these dependencies require it (nnpack only for
+          ;; x86_64).
+          (add-before 'build 'disable-avx-dependencies
+            (lambda _
+              (setenv "USE_FBGEMM" "0")
+              (if #$(not
+                     (member (or (%current-target-system)
+                                 (%current-system))
+                             '("armhf-linux" "aarch64-linux")))
+                  (setenv "USE_NNPACK" "0"))))
+          (add-after 'use-system-libraries 'set-max-jobs
+            (lambda _
+              (setenv "MAX_JOBS" (number->string (parallel-job-count)))))
+          (add-after 'set-max-jobs 'codegen1
+            (lambda _
+              (with-directory-excursion "torch/csrc/jit/tensorexpr"
+                (setenv "PYTHONPATH" "../../../..")
+                (invoke "python3" "codegen_external.py")
+                (setenv "PYTHONPATH" #f))
+
+              (invoke "python3" "aten/src/ATen/nnapi/codegen.py")
+
+              (invoke "bash" "tools/gen_flatbuffers.sh")
+
+              ;; Generate dummy files as the generation depends on the compiled
+              ;; library. They are regenerated later.
+              (setenv "PYTHONPATH" ".")
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py"
+                      "dummy")
+              (setenv "PYTHONPATH" #f)
+
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py"
+                      "dummy")
+
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py"
+                      "dummy")))
+          ;; Properly generate autogenerated files ...
+          (add-after 'install 'codegen2
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (add-installed-pythonpath inputs outputs)
+              (invoke "python3"
+                      "torchgen/operator_versions/gen_mobile_upgraders.py")
+              (invoke "python3"
+                      "torchgen/shape_functions/gen_jit_shape_functions.py")
+              (invoke "python3"
+                      "torchgen/decompositions/gen_jit_decompositions.py")))
+          ;; ... rebuild their dependencies ...
+          (add-after 'codegen2 'build2
+            (lambda _
+              (invoke "python3" "setup.py" "build")))
+          ;; ... and install again.
+          (add-after 'build2 'install2
+            (lambda _
+              (invoke "python3" "setup.py" "install" (string-append "--prefix=" #$output)
+                      "--no-compile" "--single-version-externally-managed" "--root=/")
+              (invoke "python" "-m" "compileall"
+                      "--invalidation-mode=unchecked-hash" #$output)))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              ;; Run the test suite following the instructions in
+              ;; 'CONTRIBUTING.md'. Unfortunately this doesn't work, unless
+              ;; you set PYTHONPATH or GUIX_PYTHONPATH, but this is done in
+              ;; the codegen2 phase already.
+              (when tests?
+                (invoke "python3" "test/run_test.py" "--core"))))
+          (add-after 'install2 'remove-test-executables
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Remove test executables, but keep other executables
+              ;; such as 'torch_shm_manager' and and .so files such as
+              ;; 'libtorch_global_deps.so'.
+              (let ((python-site (site-packages inputs outputs)))
+                (for-each delete-file
+                          (find-files python-site
+                                      "(^test_cpp_rpc|_test)$")))))
+          (add-after 'install2 'remove-caffe2-onnx-scripts
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (bin (string-append out "/bin")))
+                ;; Remove 'convert-caffe2-to-onnx' and
+                ;; 'convert-onnx-to-caffe2': they seem to be
+                ;; deprecated and they cause a failure of the
+                ;; 'sanity-check' phase:
+                ;;
+                ;; ImportError: cannot import name 'metanet_pb2' from
+                ;; partially initialized module 'caffe2.proto' (most likely
+                ;; due to a circular import)
+                (for-each delete-file
+                          (find-files bin "^convert-.*caffe2"))
+
+                (substitute* (find-files out "^entry_points\\.txt$")
+                  (("^convert-.*" all)
+                   (string-append "# " all "\n")))))))
+
+      ;; Even only the core tests take a very long time to run.
+      #:tests? #f))
     (native-inputs
-     (list cmake ninja))
+     (list cmake
+           doxygen
+           ideep-pytorch
+           ninja
+           pocketfft-cpp
+           python-expecttest
+           python-pytest-flakefinder
+           python-pytest-rerunfailures-13
+           python-pytest-shard
+           python-pytest-xdist
+           python-hypothesis
+           python-types-dataclasses
+           python-typing-extensions-4.10
+           shaderc
+           valgrind))
     (inputs
-     (list eigen
-           ;; ("fmt" ,fmt)
-           fp16
-           gemmlowp
-           googletest
-           googlebenchmark
-           gloo
-           nnpack
-           openblas
-           openmpi
-           pthreadpool
-           protobuf
-           pybind11
-           sleef
-           xnnpack
-           zstd))
+     (append
+      (list asmjit
+            clog
+            eigen
+            ffmpeg
+            flatbuffers-next
+            fmt
+            foxi
+            fp16
+            fxdiv
+            gemmlowp
+            gloo
+            googletest
+            googlebenchmark
+            libuv
+            miniz-for-pytorch
+            openblas
+            opencv
+            openmpi
+            pthreadpool
+            protobuf
+            pybind11
+            sleef
+            tensorpipe
+            vulkan-headers
+            vulkan-loader
+            vulkan-memory-allocator
+            zstd)
+      ;; TODO: fix build on 32 bit systems once Rust is available.
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list oneapi-dnnl
+             qnnpack
+             qnnpack-pytorch
+             xnnpack))
+      ;; nnpack requires AVX2 for x86_64-linux
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 '("armhf-linux" "aarch64-linux")))
+       (list nnpack))))
     (propagated-inputs
-     (list python-astunparse
-           python-click
-           python-numpy
-           python-pyyaml
-           python-cffi
-           python-typing-extensions
-           python-future
-           python-six
-           python-requests
-           onnx                             ;propagated for its Python modules
-           onnx-optimizer
-           cpuinfo))
+     (append
+      (list onnx ;propagated for its Python modules
+            onnx-optimizer
+            python-astunparse
+            python-click
+            python-filelock
+            python-fsspec
+            python-future
+            python-jinja2
+            python-networkx
+            python-numpy
+            python-opt-einsum
+            python-optree
+            python-packaging
+            python-psutil
+            python-pyyaml
+            python-requests
+            python-sympy
+            python-typing-extensions)
+      (filter
+       (lambda (pkg)
+         (member (or (%current-target-system)
+                     (%current-system))
+                 (package-transitive-supported-systems pkg)))
+       (list cpuinfo))))
     (home-page "https://pytorch.org/")
     (synopsis "Python library for tensor computation and deep neural networks")
     (description
@@ -4589,61 +4713,6 @@ (define-public python-pytorch
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
-(define-public python-pytorch2
-  (package
-    (inherit python-pytorch)
-    (name "python-pytorch")
-    (version "2.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0hdr0d6n072qd0nq2dkxhc9pva6vggj9hpzc0glpc60vfgk0cgzb"))
-              (patches (search-patches "python-pytorch2-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-peachpy"
-                              "tbb" "XNNPACK" "zstd"))
-                  (substitute* "caffe2/CMakeLists.txt"
-                    (("target_link_libraries\\(\\$\\{test_name\\}_\\$\\{CPU_CAPABILITY\\} c10 sleef gtest_main\\)")
-                     "target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest gtest_main)"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
-    (inputs
-     (modify-inputs (package-inputs python-pytorch)
-       (replace "xnnpack" xnnpack-for-torch2)))
-    (propagated-inputs
-     (modify-inputs (package-propagated-inputs python-pytorch)
-       (append python-filelock
-               python-fsspec
-               python-jinja2
-               python-networkx
-               python-opt-einsum
-               python-sympy)
-       (replace "onnx" onnx-for-torch2)
-       (replace "onnx-optimizer" onnx-optimizer-for-torch2)))))
-
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
diff --git a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch b/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
deleted file mode 100644
index 76c06520f0..0000000000
--- a/gnu/packages/patches/python-pytorch-1.9.0-system-libraries.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 5d57b9ca78..620cca4e60 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -644,11 +644,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1485,7 +1480,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 50ebb224ce..5953d9ddf7 100644
---- a/caffe2/CMakeLists.txt
-+++ b/caffe2/CMakeLists.txt
-@@ -1632,7 +1632,7 @@ if(BUILD_TEST)
-         if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
-           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
-           if(USE_FBGEMM)
-             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
-           endif()
-@@ -1655,7 +1655,7 @@ if(BUILD_TEST)
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1673,7 +1673,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       cuda_add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1691,7 +1691,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1709,7 +1709,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
-
-diff --git a/torch/lib/c10d/test/CMakeLists.txt b/torch/lib/c10d/test/CMakeLists.txt
-index b74d4b65f7..fc7c207505 100644
---- a/torch/lib/c10d/test/CMakeLists.txt
-+++ b/torch/lib/c10d/test/CMakeLists.txt
-@@ -16,24 +16,24 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp c10d gtest_main)
--c10d_add_test(TCPStoreTest.cpp c10d gtest_main)
-+c10d_add_test(FileStoreTest.cpp c10d gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp c10d gtest_main gtest)
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp c10d gtest_main)
-+  c10d_add_test(HashStoreTest.cpp c10d gtest_main gtest)
- endif()
- 
- if(USE_CUDA)
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main)
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main gtest)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_C10D_NCCL)
--    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main gtest)
-     c10d_add_test(ProcessGroupNCCLErrorsTest.cpp c10d c10d_cuda_test
--        gtest_main)
-+        gtest_main gtest)
-   endif()
- else()
-   if(USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main gtest)
-   endif()
- endif()
-
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cbb5..6075bdd0a4 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
diff --git a/gnu/packages/patches/python-pytorch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-fix-codegen.patch
new file mode 100644
index 0000000000..cb246b25de
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index bc69b05162..0f8df81de3 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -20,9 +20,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -62,7 +67,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index dab1568580..55c58715fc 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = dict(sorted_version_map_)
+ 
+@@ -378,7 +383,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ 
+ def main() -> None:
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-runpath.patch b/gnu/packages/patches/python-pytorch-runpath.patch
index 7f95b88a2b..2c1724cdb0 100644
--- a/gnu/packages/patches/python-pytorch-runpath.patch
+++ b/gnu/packages/patches/python-pytorch-runpath.patch
@@ -3,10 +3,10 @@ get installed, quite surprisingly, to 'lib/python3.8/site-packages/{bin,lib}'.
 Make sure RUNPATH matches that.
 
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index 5b5622f0..30d27e57 100644
+index 74836372..c8eb69d1 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1909,7 +1909,7 @@ if(BUILD_PYTHON)
+@@ -1910,7 +1910,7 @@ if(BUILD_PYTHON)
    if(${BUILDING_WITH_TORCH_LIBS})
      # site-packages/caffe2/python/caffe2_pybind11_state
      # site-packages/torch/lib
@@ -16,7 +16,7 @@ index 5b5622f0..30d27e57 100644
  
    # Must also include `CMAKE_SHARED_LINKER_FLAGS` in linker flags for
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index ee9cf410..f190e69b 100644
+index acc95842..8f8fb7d7 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
 @@ -4,7 +4,7 @@ if(APPLE)
@@ -28,3 +28,16 @@ index ee9cf410..f190e69b 100644
  endif(APPLE)
  # Use separate rpaths during build and install phases
  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
+diff --git a/functorch/CMakeLists.txt b/functorch/CMakeLists.txt
+index f2f32745..db21b656 100644
+--- a/functorch/CMakeLists.txt
++++ b/functorch/CMakeLists.txt
+@@ -21,7 +21,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE pybind::pybind11)
+ 
+ set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+       ${CMAKE_BINARY_DIR}/functorch)
+-set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${_rpath_portable_origin}/../torch/lib")
++set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../torch/lib")
+ 
+ # Copy-pasted prefix/suffix logic for Python extensions from
+ # https://github.com/pytorch/pytorch/blob/33bb8ae350611760139457b85842b1d7edf9aa11/caffe2/CMakeLists.txt#L1975
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
index fd849fd9e2..99f999f32f 100644
--- a/gnu/packages/patches/python-pytorch-system-libraries.patch
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -1,38 +1,104 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
 
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 2c2b967..5ac5fa6 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -371,9 +371,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x|ppc64le)$")
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
 diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
-index d57d7ebb..5b5622f0 100644
+index 7483637..093de40 100644
 --- a/caffe2/CMakeLists.txt
 +++ b/caffe2/CMakeLists.txt
-@@ -1736,7 +1736,7 @@ if(BUILD_TEST)
+@@ -111,9 +111,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -1055,7 +1052,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1396,6 +1392,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ if(USE_MPI)
+   target_link_libraries(torch_cpu PRIVATE MPI::MPI_CXX)
+ endif()
+@@ -1653,7 +1650,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1680,7 +1677,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1701,7 +1698,7 @@ if(BUILD_TEST)
          if(NOT MSVC)
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
            # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
 -          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
 +          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
            if(USE_FBGEMM)
              target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
            endif()
-@@ -1759,7 +1759,7 @@ if(BUILD_TEST)
+@@ -1715,7 +1712,7 @@ if(BUILD_TEST)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1732,7 +1729,7 @@ if(BUILD_TEST)
    foreach(test_src ${Caffe2_CPU_TEST_SRCS})
      get_filename_component(test_name ${test_src} NAME_WE)
      add_executable(${test_name} "${test_src}")
 -    target_link_libraries(${test_name} torch_library gtest_main)
 +    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     if(USE_OPENMP)
-       # -fopenmp is a compile time flag and as result not guaranteed
-       # to link executable against OpenMP runtime library
-@@ -1785,7 +1785,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_GPU_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1803,7 +1803,7 @@ if(BUILD_TEST)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1795,7 +1792,7 @@ if(BUILD_TEST)
      foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
        get_filename_component(test_name ${test_src} NAME_WE)
        add_executable(${test_name} "${test_src}")
@@ -41,20 +107,66 @@ index d57d7ebb..5b5622f0 100644
        target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
        target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
        add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
-@@ -1821,7 +1821,7 @@ if(BUILD_TEST)
-     foreach(test_src ${Caffe2_HIP_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
-       target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
+index acc9584..97275bf 100644
 --- a/cmake/Dependencies.cmake
 +++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+@@ -283,7 +283,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -489,19 +489,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -550,13 +537,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -728,11 +708,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
    # this shouldn't be necessary anymore.
    get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
    set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
@@ -66,7 +178,49 @@ index 557ab649..ee9cf410 100644
  
    # We will not need to test benchmark lib itself.
    set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+@@ -810,16 +785,6 @@ if(USE_FBGEMM)
+     if(USE_ASAN)
+       set(USE_SANITIZER "address,undefined" CACHE STRING "-fsanitize options for FBGEMM")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -979,7 +944,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1362,7 +1327,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1529,7 +1493,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1560,7 +1523,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
      endif()
      set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
      message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
@@ -75,8 +229,36 @@ index 557ab649..ee9cf410 100644
    endif()
    include_directories(${FOXI_INCLUDE_DIRS})
    list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1739,9 +1702,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1796,7 +1758,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1805,7 +1767,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
 diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
+index 9d5f064..c3624e5 100644
 --- a/cmake/External/nnpack.cmake
 +++ b/cmake/External/nnpack.cmake
 @@ -40,7 +40,7 @@ endif()
@@ -88,7 +270,7 @@ index a41343cb..6075bdd0 100644
    message(STATUS "Brace yourself, we are building NNPACK")
    set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
  
-@@ -114,6 +114,5 @@ endif()
+@@ -112,6 +112,5 @@ endif()
  # (4) Catch-all: not supported.
  ##############################################################################
  
@@ -97,8 +279,45 @@ index a41343cb..6075bdd0 100644
 -set(USE_NNPACK OFF)
 +set(NNPACK_FOUND TRUE)
 +set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 8793562..9f8fa3d 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,4 +15,4 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+diff --git a/setup.py b/setup.py
+index 81f3c6c..3251cab 100644
+--- a/setup.py
++++ b/setup.py
+@@ -482,13 +482,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         "tools/shared/_utils_internal.py",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h",
+-        "torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h",
+     ]
+     orig_files = [
+         "torch/_utils_internal.py",
+-        "third_party/valgrind-headers/callgrind.h",
+-        "third_party/valgrind-headers/valgrind.h",
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
 diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
+index 5c89748..ef84c57 100644
 --- a/test/cpp/c10d/CMakeLists.txt
 +++ b/test/cpp/c10d/CMakeLists.txt
 @@ -16,14 +16,14 @@ function(c10d_add_test test_src)
@@ -133,7 +352,29 @@ index bf91460c..ef56948f 100644
    endif()
    if(USE_NCCL AND USE_C10D_NCCL)
      # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
    endif()
  else()
    if(USE_GLOO AND USE_C10D_GLOO)
@@ -143,10 +384,10 @@ index bf91460c..ef56948f 100644
  endif()
  
 diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
+index 012471d..d39b625 100644
 --- a/test/cpp/tensorexpr/CMakeLists.txt
 +++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
  # pthreadpool header. For some build environment we need add the dependency
  # explicitly.
  if(USE_PTHREADPOOL)
@@ -154,4 +395,4 @@ index 8fc5a0a1..643202f6 100644
 +  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
  endif()
  if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
+   target_compile_definitions(test_tensorexpr PRIVATE USE_CUDA)
diff --git a/gnu/packages/patches/python-pytorch-without-kineto.patch b/gnu/packages/patches/python-pytorch-without-kineto.patch
new file mode 100644
index 0000000000..f956316866
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-without-kineto.patch
@@ -0,0 +1,60 @@
+Even when building without Kineto, the <ActivityType.h> header is still
+imported and the ActivityType type is used. This patch was copied from
+https://github.com/pytorch/pytorch/pull/111048.
+
+diff --git a/torch/csrc/profiler/kineto_shim.h b/torch/csrc/profiler/kineto_shim.h
+index e92cbf00..68985ab7 100644
+--- a/torch/csrc/profiler/kineto_shim.h
++++ b/torch/csrc/profiler/kineto_shim.h
+@@ -12,7 +12,51 @@
+ #undef USE_KINETO
+ #endif
+ 
++#ifdef USE_KINETO
+ #include <ActivityType.h>
++#else
++namespace libkineto {
++// copied from header
++/*
++ * Copyright (c) Meta Platforms, Inc. and affiliates.
++ * All rights reserved.
++ *
++ * This source code is licensed under the BSD-style license found in the
++ * LICENSE file in the root directory of this source tree.
++ */
++
++// Note : All activity types are not enabled by default. Please add them
++// at correct position in the enum
++enum class ActivityType {
++    // Activity types enabled by default
++    CPU_OP = 0, // cpu side ops
++    USER_ANNOTATION,
++    GPU_USER_ANNOTATION,
++    GPU_MEMCPY,
++    GPU_MEMSET,
++    CONCURRENT_KERNEL, // on-device kernels
++    EXTERNAL_CORRELATION,
++    CUDA_RUNTIME, // host side cuda runtime events
++    CUDA_DRIVER, // host side cuda driver events
++    CPU_INSTANT_EVENT, // host side point-like events
++    PYTHON_FUNCTION,
++    OVERHEAD, // CUPTI induced overhead events sampled from its overhead API.
++
++    // Optional Activity types
++    CUDA_SYNC, // synchronization events between runtime and kernels
++    GLOW_RUNTIME, // host side glow runtime events
++    MTIA_RUNTIME, // host side MTIA runtime events
++    CUDA_PROFILER_RANGE, // CUPTI Profiler range for performance metrics
++    MTIA_CCP_EVENTS, // MTIA ondevice CCP events
++    HPU_OP, // HPU host side runtime event
++    XPU_RUNTIME, // host side xpu runtime events
++
++    ENUM_COUNT, // This is to add buffer and not used for any profiling logic. Add your new type before it.
++    OPTIONAL_ACTIVITY_TYPE_START = CUDA_SYNC,
++};
++}
++
++#endif
+ 
+ #include <torch/csrc/Export.h>
+ #include <torch/csrc/profiler/api.h>
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 27/32] gnu: Add python-pytorch-avx.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (25 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
                         ` (4 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-pytorch-avx): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index bcd1c26838..59b344aef2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4713,6 +4713,21 @@ (define-public python-pytorch
 Note: currently this package does not provide GPU support.")
     (license license:bsd-3)))
 
+;; This package variant includes the dependencies requiring at least AVX2 or
+;; AVX-512.
+(define-public python-pytorch-avx
+  (package/inherit python-pytorch
+    (name "python-pytorch-avx")
+    (inputs
+     (modify-inputs (package-inputs python-pytorch)
+       (append fbgemm nnpack)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-pytorch)
+      ((#:phases phases)
+       #~(modify-phases #$phases
+           (delete 'disable-avx-dependencies)))))
+    (supported-systems '("x86_64-linux"))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 28/32] gnu: python-torchvision: Update to 0.17.1.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (26 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 27/32] gnu: Add python-pytorch-avx David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
                         ` (3 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (python-torchvision): Update to 0.17.1.
[source]: Add snippet to remove "android" and "ios" directories.
---
 gnu/packages/machine-learning.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 59b344aef2..137c74876e 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5179,7 +5179,7 @@ (define-public python-torchmetrics
 (define-public python-torchvision
   (package
     (name "python-torchvision")
-    (version "0.15.2")
+    (version "0.17.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5189,7 +5189,12 @@ (define-public python-torchvision
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cq2s13vkgg9rljjbrm4g33yxq7q5zqp7f4xm5cq624gvs0wxmi8"))))
+                "094jz0ryzh0yjxf687r61r482fdh3bax8ix2csghraps0z1sns1b"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "android")
+                  (delete-file-recursively "ios")))))
     (build-system pyproject-build-system)
     (arguments
      (list #:tests? #false)) ;the test suite is expensive and there is no easy
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 29/32] gnu: Add ideep-pytorch-for-r-torch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (27 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
                         ` (2 subsequent siblings)
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (ideep-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 137c74876e..437aa7cc81 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4315,6 +4315,21 @@ (define-public ideep-pytorch
 PyTorch.")
     (license license:expat)))
 
+(define-public ideep-pytorch-for-r-torch
+  (package
+    (inherit ideep-pytorch)
+    (version "2.7.3-1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intel/ideep")
+             (commit (string-append "pytorch-rls-v" version))))
+       (file-name (git-file-name (package-name ideep-pytorch) version))
+       (sha256
+        (base32
+         "0hdpkhcjry22fjx2zg2r48v7f4ljrclzj0li2pgk76kvyblfbyvm"))))))
+
 (define %python-pytorch-version "2.2.1")
 
 (define %python-pytorch-src
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 30/32] gnu: Add oneapi-dnnl-for-r-torch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (28 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (oneapi-dnnl-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 437aa7cc81..ae17869adc 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -5894,6 +5894,20 @@ (define-public oneapi-dnnl
     (supported-systems %64bit-supported-systems)
     (license license:asl2.0)))
 
+(define-public oneapi-dnnl-for-r-torch
+  (package
+    (inherit oneapi-dnnl)
+    (version "2.7.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/oneapi-src/oneDNN")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name (package-name oneapi-dnnl) version))
+       (sha256
+        (base32 "1zyw5rd8x346bb7gac9a7x3saviw3zvp6aqz2z1l9sv163vmjfz6"))))))
+
 (define-public python-gguf
   (package
     (name "python-gguf")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 31/32] gnu: Add qnnpack-pytorch-for-r-torch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (29 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
@ 2024-03-23 22:05       ` David Elsing
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-version): New
variable.
(%python-pytorch-for-r-torch-src): New variable.
(qnnpack-pytorch-for-r-torch): New variable.
---
 gnu/packages/machine-learning.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index ae17869adc..834de52fa1 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4743,6 +4743,34 @@ (define-public python-pytorch-avx
            (delete 'disable-avx-dependencies)))))
     (supported-systems '("x86_64-linux"))))
 
+(define %python-pytorch-for-r-torch-version "2.0.1")
+
+(define %python-pytorch-for-r-torch-src
+  (origin
+    (inherit %python-pytorch-src)
+    (uri (git-reference
+          (url "https://github.com/pytorch/pytorch")
+          (commit (string-append "v" %python-pytorch-for-r-torch-version))))
+    (file-name (git-file-name "python-pytorch"
+                              %python-pytorch-for-r-torch-version))
+    (sha256
+     (base32
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+
+(define-public qnnpack-pytorch-for-r-torch
+  (package
+    (inherit qnnpack-pytorch)
+    (version (string-append "pytorch-" %python-pytorch-for-r-torch-version))
+    (source
+     (origin
+       (inherit %python-pytorch-for-r-torch-src)
+       (patches '())
+       (modules '((guix build utils)
+                  (srfi srfi-26)
+                  (ice-9 ftw)))
+       (snippet
+        (origin-snippet (package-source qnnpack-pytorch)))))))
+
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 130+ messages in thread

* [bug#69591] [PATCH v4 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch.
  2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
                         ` (30 preceding siblings ...)
  2024-03-23 22:05       ` [bug#69591] [PATCH v4 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
@ 2024-03-23 22:05       ` David Elsing
  31 siblings, 0 replies; 130+ messages in thread
From: David Elsing @ 2024-03-23 22:05 UTC (permalink / raw)
  To: 69591; +Cc: David Elsing

* gnu/packages/machine-learning.scm (%python-pytorch-for-r-torch-src): Add
patches.
(python-pytorch-for-r-torch)[version]: Use
%python-pytorch-for-r-torch-version.
[source]: Use %python-pytorch-for-r-torch-src.
[native-inputs]: Use 'modify-inputs'.
[inputs]: Don't replace xnnpack. Replace qnnpack-pytorch with
qnnpack-pytorch-for-r-torch and oneapi-dnnl with oneapi-dnnl-for-r-torch.
[propagated-inputs]: Don't replace onnx and onnx-optimizer.
* gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen: New file.
* gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch: New file.
* gnu/packages/patches/python-pytorch2-system-libraries.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Register them.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/machine-learning.scm             |  61 +--
 ...thon-pytorch-for-r-torch-fix-codegen.patch | 167 ++++++++
 ...pytorch-for-r-torch-system-libraries.patch | 399 ++++++++++++++++++
 .../python-pytorch2-system-libraries.patch    | 156 -------
 5 files changed, 586 insertions(+), 198 deletions(-)
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
 create mode 100644 gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
 delete mode 100644 gnu/packages/patches/python-pytorch2-system-libraries.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c7dfe1b873..a9fae2052d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1813,7 +1813,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pyreadstat-link-libiconv.patch	\
   %D%/packages/patches/python-pyls-black-41.patch		\
   %D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch	\
-  %D%/packages/patches/python-pytorch2-system-libraries.patch	\
   %D%/packages/patches/python-sip-include-dirs.patch	\
   %D%/packages/patches/python-sgmllib3k-assertions.patch	\
   %D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch	\
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 834de52fa1..c3014ced14 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4755,7 +4755,15 @@ (define %python-pytorch-for-r-torch-src
                               %python-pytorch-for-r-torch-version))
     (sha256
      (base32
-      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))))
+      "0iirrn687i7sfv0p0i7dn89x3rf13a7l8y1y5h190h51yjxpxqxa"))
+    (patches (search-patches
+              "python-pytorch-for-r-torch-system-libraries.patch"
+              "python-pytorch-runpath.patch"
+              "python-pytorch-without-kineto.patch"
+              ;; Some autogeneration scripts depend on the
+              ;; compile PyTorch library. Therefore, we create
+              ;; dummy versions which are regenerated later.
+              "python-pytorch-for-r-torch-fix-codegen.patch"))))
 
 (define-public qnnpack-pytorch-for-r-torch
   (package
@@ -4771,56 +4779,27 @@ (define-public qnnpack-pytorch-for-r-torch
        (snippet
         (origin-snippet (package-source qnnpack-pytorch)))))))
 
+;; Keep in sync with r-torch
 (define-public python-pytorch-for-r-torch
   (package
     (inherit python-pytorch)
     (name "python-pytorch")
-    (version "2.0.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/pytorch/pytorch")
-                    (commit (string-append "v" version))
-                    (recursive? #t)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14m7v54zyd2qg2xk9mqdpbf4ps7091mdzinzh4vq9p5k4bpznj65"))
-              (patches (search-patches "python-pytorch2-system-libraries.patch"
-                                       "python-pytorch-runpath.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; XXX: Let's be clear: this package is a bundling fest.  We
-                  ;; delete as much as we can, but there's still a lot left.
-                  (for-each (lambda (directory)
-                              (delete-file-recursively
-                               (string-append "third_party/" directory)))
-                            '("benchmark" "cpuinfo" "eigen"
-
-                              ;; FIXME: QNNPACK (of which XNNPACK is a fork)
-                              ;; needs these.
-                              ;; "FP16" "FXdiv" "gemmlowp" "psimd"
-
-                              "gloo" "googletest" "ios-cmake" "NNPACK"
-                              "onnx" "protobuf" "pthreadpool"
-                              "pybind11" "python-enum" "python-peachpy"
-                              "python-six" "tbb" "XNNPACK" "zstd"))
-                  (substitute* "caffe2/CMakeLists.txt"
-                    (("target_link_libraries\\(\\$\\{test_name\\}_\\$\\{CPU_CAPABILITY\\} c10 sleef gtest_main\\)")
-                     "target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest gtest_main)"))
-                  (substitute* "functorch/CMakeLists.txt"
-                    (("\\$\\{_rpath_portable_origin\\}/../torch/lib")
-                     "$ORIGIN/../torch/lib"))))))
+    (version %python-pytorch-for-r-torch-version)
+    (source %python-pytorch-for-r-torch-src)
+    (native-inputs
+     (modify-inputs (package-native-inputs python-pytorch)
+       (replace "ideep-pytorch" ideep-pytorch-for-r-torch)))
+    (inputs
+     (modify-inputs (package-inputs python-pytorch)
+       (replace "qnnpack-pytorch" qnnpack-pytorch-for-r-torch)
+       (replace "oneapi-dnnl" oneapi-dnnl-for-r-torch)))
     (propagated-inputs
      (modify-inputs (package-propagated-inputs python-pytorch)
        (append python-filelock
                python-jinja2
                python-networkx
                python-opt-einsum
-               python-sympy)
-       (replace "onnx" onnx-for-torch2)
-       (replace "onnx-optimizer" onnx-optimizer-for-torch2)))))
+               python-sympy)))))
 
 (define-public python-pytorch-geometric
   (package
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
new file mode 100644
index 0000000000..8515e5ab13
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-fix-codegen.patch
@@ -0,0 +1,167 @@
+This patch fixes some scripts for generating source files.  For
+gen_jit_decompositions.py, gen_mobile_upgraders.py and
+gen_jit_shape_functions.py, which depend on the compiled PyTorch library, the
+option to generate "dummy" source files is added for the initial build, which
+is later corrected.  codegen_external.py is patched to avoid duplicate
+functions and add the static keyword as in the existing generated file.
+
+diff --git a/tools/gen_flatbuffers.sh b/tools/gen_flatbuffers.sh
+index cc0263dbbf..ac34e84b82 100644
+--- a/tools/gen_flatbuffers.sh
++++ b/tools/gen_flatbuffers.sh
+@@ -1,13 +1,13 @@
+ #!/bin/bash
+ ROOT=$(pwd)
+-FF_LOCATION="$ROOT/third_party/flatbuffers"
+-cd "$FF_LOCATION" || exit
+-mkdir build
+-cd build || exit
+-cmake ..
+-cmake --build . --target flatc
+-mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
+-./flatc --cpp --gen-mutable --scoped-enums \
++#FF_LOCATION="$ROOT/third_party/flatbuffers"
++#cd "$FF_LOCATION" || exit
++#mkdir build
++#cd build || exit
++#cmake ..
++#cmake --build . --target flatc
++#mkdir -p "$ROOT/build/torch/csrc/jit/serialization"
++flatc --cpp --gen-mutable --scoped-enums \
+      -o "$ROOT/torch/csrc/jit/serialization" \
+      -c "$ROOT/torch/csrc/jit/serialization/mobile_bytecode.fbs"
+ echo '// @generated' >> "$ROOT/torch/csrc/jit/serialization/mobile_bytecode_generated.h"
+diff --git a/torch/csrc/jit/tensorexpr/codegen_external.py b/torch/csrc/jit/tensorexpr/codegen_external.py
+index 120520b139..0c8587f02d 100644
+--- a/torch/csrc/jit/tensorexpr/codegen_external.py
++++ b/torch/csrc/jit/tensorexpr/codegen_external.py
+@@ -16,9 +16,14 @@ def gen_external(native_functions_path, tags_path, external_path):
+     native_functions = parse_native_yaml(native_functions_path, tags_path)
+     func_decls = []
+     func_registrations = []
+-    for func in native_functions:
++    done_names = set()
++    for func in native_functions[0]:
+         schema = func.func
+         name = schema.name.name.base
++        if name in done_names:
++            continue
++        else:
++            done_names.add(name)
+         args = schema.arguments
+         # Only supports extern calls for functions with out variants
+         if not schema.is_out_fn():
+@@ -48,7 +53,7 @@ def gen_external(native_functions_path, tags_path, external_path):
+ 
+         # print(tensor_decls, name, arg_names)
+         func_decl = f"""\
+-void nnc_aten_{name}(
++static void nnc_aten_{name}(
+     int64_t bufs_num,
+     void** buf_data,
+     int64_t* buf_ranks,
+diff --git a/torchgen/decompositions/gen_jit_decompositions.py b/torchgen/decompositions/gen_jit_decompositions.py
+index 7cfbb803f9..2e69bb1868 100644
+--- a/torchgen/decompositions/gen_jit_decompositions.py
++++ b/torchgen/decompositions/gen_jit_decompositions.py
+@@ -1,8 +1,12 @@
+ #!/usr/bin/env python3
+ import os
+ from pathlib import Path
++import sys
+ 
+-from torch.jit._decompositions import decomposition_table
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    from torch.jit._decompositions import decomposition_table
++else:
++    decomposition_table = {}
+ 
+ # from torchgen.code_template import CodeTemplate
+ 
+@@ -85,7 +89,7 @@ def write_decomposition_util_file(path: str) -> None:
+ 
+ 
+ def main() -> None:
+-    pytorch_dir = Path(__file__).resolve().parents[3]
++    pytorch_dir = Path(__file__).resolve().parents[2]
+     upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "runtime"
+     write_decomposition_util_file(str(upgrader_path))
+ 
+diff --git a/torchgen/operator_versions/gen_mobile_upgraders.py b/torchgen/operator_versions/gen_mobile_upgraders.py
+index e5287cffc5..57f3c38096 100644
+--- a/torchgen/operator_versions/gen_mobile_upgraders.py
++++ b/torchgen/operator_versions/gen_mobile_upgraders.py
+@@ -2,10 +2,12 @@
+ import os
+ from enum import Enum
+ from pathlib import Path
++import sys
+ from typing import Any, Dict, List
+ 
+-import torch
+-from torch.jit.generate_bytecode import generate_upgraders_bytecode
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    import torch
++    from torch.jit.generate_bytecode import generate_upgraders_bytecode
+ 
+ from torchgen.code_template import CodeTemplate
+ from torchgen.operator_versions.gen_mobile_upgraders_constant import (
+@@ -262,7 +264,10 @@ def construct_register_size(register_size_from_yaml: int) -> str:
+ def construct_version_maps(
+     upgrader_bytecode_function_to_index_map: Dict[str, Any]
+ ) -> str:
+-    version_map = torch._C._get_operator_version_map()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        version_map = torch._C._get_operator_version_map()
++    else:
++        version_map = {}
+     sorted_version_map_ = sorted(version_map.items(), key=lambda item: item[0])  # type: ignore[no-any-return]
+     sorted_version_map = {name: lst for name, lst in sorted_version_map_}
+ 
+@@ -379,7 +384,10 @@ def sort_upgrader(upgrader_list: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ 
+ def main() -> None:
+ 
+-    upgrader_list = generate_upgraders_bytecode()
++    if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++        upgrader_list = generate_upgraders_bytecode()
++    else:
++        upgrader_list = []
+     sorted_upgrader_list = sort_upgrader(upgrader_list)
+     for up in sorted_upgrader_list:
+         print("after sort upgrader : ", next(iter(up)))
+diff --git a/torchgen/shape_functions/gen_jit_shape_functions.py b/torchgen/shape_functions/gen_jit_shape_functions.py
+index c6336a6951..34e394d818 100644
+--- a/torchgen/shape_functions/gen_jit_shape_functions.py
++++ b/torchgen/shape_functions/gen_jit_shape_functions.py
+@@ -18,16 +18,20 @@ you are in the root directory of the Pytorch git repo"""
+ if not file_path.exists():
+     raise Exception(err_msg)
+ 
+-spec = importlib.util.spec_from_file_location(module_name, file_path)
+-assert spec is not None
+-module = importlib.util.module_from_spec(spec)
+-sys.modules[module_name] = module
+-assert spec.loader is not None
+-assert module is not None
+-spec.loader.exec_module(module)
+-
+-bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
+-shape_compute_graph_mapping = module.shape_compute_graph_mapping
++if len(sys.argv) < 2 or sys.argv[1] != "dummy":
++    spec = importlib.util.spec_from_file_location(module_name, file_path)
++    assert spec is not None
++    module = importlib.util.module_from_spec(spec)
++    sys.modules[module_name] = module
++    assert spec.loader is not None
++    assert module is not None
++    spec.loader.exec_module(module)
++
++    bounded_compute_graph_mapping = module.bounded_compute_graph_mapping
++    shape_compute_graph_mapping = module.shape_compute_graph_mapping
++else:
++    bounded_compute_graph_mapping = {}
++    shape_compute_graph_mapping = {}
+ 
+ 
+ SHAPE_HEADER = r"""
diff --git a/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
new file mode 100644
index 0000000000..e5d647f70d
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-for-r-torch-system-libraries.patch
@@ -0,0 +1,399 @@
+Patch build files to also system libraries instead of bundled ones for the
+libraries not supported or working only by specifying USE_SYSTEM_LIBS.  This
+includes using the clog, cpuinfo, fbgemm, foxi, fp16, fxdiv, googletest,
+ideep, miniz, nnpack, oneapi-dnnl, pocketfft, pthreadpool, qnnpack,
+qnnpack-pytorch, tensorpipe, valgrind and xnnpack packages.
+For QNNPACK, two versions were bundled and are required: The upstream one and
+an internal fork (now in the package qnnpack-pytorch).
+
+diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt
+index 96fc297..7f27b66 100644
+--- a/aten/src/ATen/CMakeLists.txt
++++ b/aten/src/ATen/CMakeLists.txt
+@@ -362,9 +362,9 @@ if(AT_NNPACK_ENABLED)
+   list(APPEND ATen_CPU_DEPENDENCY_LIBS nnpack) # cpuinfo is added below
+ endif()
+ 
+-if(MKLDNN_FOUND)
+-  list(APPEND ATen_CPU_DEPENDENCY_LIBS ${MKLDNN_LIBRARIES})
+-endif(MKLDNN_FOUND)
++if(USE_MKLDNN)
++  list(APPEND ATen_CPU_DEPENDENCY_LIBS DNNL::dnnl)
++endif(USE_MKLDNN)
+ 
+ list(APPEND ATen_CPU_DEPENDENCY_LIBS cpuinfo)
+ 
+diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
+index 221e3f3..417f601 100644
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -110,9 +110,6 @@ if(NOT MSVC AND USE_XNNPACK)
+   if(NOT TARGET fxdiv)
+     set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+     set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+-    add_subdirectory(
+-      "${FXDIV_SOURCE_DIR}"
+-      "${CMAKE_BINARY_DIR}/FXdiv")
+   endif()
+ endif()
+ 
+@@ -975,7 +972,6 @@ elseif(USE_CUDA)
+ endif()
+ 
+ if(NOT MSVC AND USE_XNNPACK)
+-  TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+ 
+ # ==========================================================
+@@ -1314,6 +1310,7 @@ target_link_libraries(torch_cpu PUBLIC c10)
+ target_link_libraries(torch_cpu PUBLIC ${Caffe2_PUBLIC_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_LIBS})
+ target_link_libraries(torch_cpu PRIVATE ${Caffe2_DEPENDENCY_WHOLE_LINK_LIBS})
++target_link_libraries(torch_cpu PRIVATE miniz clog)
+ target_include_directories(torch_cpu INTERFACE $<INSTALL_INTERFACE:include>)
+ target_include_directories(torch_cpu PRIVATE ${Caffe2_CPU_INCLUDE})
+ target_include_directories(torch_cpu SYSTEM PRIVATE "${Caffe2_DEPENDENCY_INCLUDE}")
+@@ -1570,7 +1567,7 @@ if(BUILD_STATIC_RUNTIME_BENCHMARK)
+   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
+   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
+   target_link_libraries(static_runtime_bench torch_library benchmark)
+-  target_link_libraries(static_runtime_test torch_library gtest_main)
++  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
+ endif()
+ 
+ if(BUILD_TENSOREXPR_BENCHMARK)
+@@ -1601,7 +1598,7 @@ if(BUILD_MOBILE_TEST)
+   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
+@@ -1622,13 +1619,13 @@ if(BUILD_TEST)
+         if(NOT MSVC)
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/AffineQuantizerBase.cpp)
+           # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
+           if(USE_FBGEMM)
+             target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
+           endif()
+         else()
+           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
+-          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
++          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
+         endif()
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
+         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+@@ -1645,7 +1642,7 @@ if(BUILD_TEST)
+   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
+     get_filename_component(test_name ${test_src} NAME_WE)
+     add_executable(${test_name} "${test_src}")
+-    target_link_libraries(${test_name} torch_library gtest_main)
++    target_link_libraries(${test_name} torch_library gtest_main gtest)
+     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1703,7 +1700,7 @@ if(BUILD_TEST)
+     foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
+       get_filename_component(test_name ${test_src} NAME_WE)
+       add_executable(${test_name} "${test_src}")
+-      target_link_libraries(${test_name} torch_library gtest_main)
++      target_link_libraries(${test_name} torch_library gtest_main gtest)
+       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+       add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+diff --git a/caffe2/serialize/CMakeLists.txt b/caffe2/serialize/CMakeLists.txt
+index 1552b59..67e1a9a 100644
+--- a/caffe2/serialize/CMakeLists.txt
++++ b/caffe2/serialize/CMakeLists.txt
+@@ -2,7 +2,6 @@ file(GLOB tmp *_test.cc)
+ 
+ set(Caffe2_CPU_TEST_SRCS ${Caffe2_CPU_TEST_SRCS} ${tmp})
+ list(APPEND Caffe2_CPU_SRCS
+-  ${PROJECT_SOURCE_DIR}/third_party/miniz-2.1.0/miniz.c
+   ${CMAKE_CURRENT_SOURCE_DIR}/inline_container.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/istream_adapter.cc
+   ${CMAKE_CURRENT_SOURCE_DIR}/file_adapter.cc
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 8c0e3c2..d65576a 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -298,7 +298,7 @@ endif()
+ # --- [ PocketFFT
+ set(AT_POCKETFFT_ENABLED 0)
+ if(NOT AT_MKL_ENABLED)
+-  set(POCKETFFT_INCLUDE_DIR "${Torch_SOURCE_DIR}/third_party/pocketfft/")
++  set(POCKETFFT_INCLUDE_DIR "#POCKETFFT_INCLUDE_DIR")
+   if(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}")
+     message(FATAL_ERROR "pocketfft directory not found, expected ${POCKETFFT_INCLUDE_DIR}")
+   elif(NOT EXISTS "${POCKETFFT_INCLUDE_DIR}/pocketfft_hdronly.h")
+@@ -501,19 +501,6 @@ if(USE_QNNPACK)
+     set(QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+     set(QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+     set(QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-    add_subdirectory(
+-      "${QNNPACK_SOURCE_DIR}"
+-      "${CONFU_DEPENDENCIES_BINARY_DIR}/QNNPACK")
+-
+-    # TODO: See https://github.com/pytorch/pytorch/issues/56285
+-    if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+-      target_compile_options(qnnpack PRIVATE -Wno-deprecated-declarations)
+-    endif()
+-
+-    # We build static versions of QNNPACK and pthreadpool but link
+-    # them into a shared library for Caffe2, so they need PIC.
+-    set_property(TARGET qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+     if(QNNPACK_CUSTOM_THREADPOOL)
+       target_compile_definitions(
+@@ -562,13 +549,6 @@ if(USE_PYTORCH_QNNPACK)
+       set(PYTORCH_QNNPACK_BUILD_TESTS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_BUILD_BENCHMARKS OFF CACHE BOOL "")
+       set(PYTORCH_QNNPACK_LIBRARY_TYPE "static" CACHE STRING "")
+-      add_subdirectory(
+-        "${PYTORCH_QNNPACK_SOURCE_DIR}"
+-        "${CONFU_DEPENDENCIES_BINARY_DIR}/pytorch_qnnpack")
+-      # We build static versions of QNNPACK and pthreadpool but link
+-      # them into a shared library for Caffe2, so they need PIC.
+-      set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+-      set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ 
+       if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+         target_compile_definitions(
+@@ -750,11 +730,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+   # this shouldn't be necessary anymore.
+   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
+-  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
+-
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
+-  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
+ 
+   # We will not need to test benchmark lib itself.
+   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
+@@ -829,16 +804,6 @@ if(USE_FBGEMM)
+     else()
+       set(FBGEMM_LIBRARY_TYPE "static" CACHE STRING "")
+     endif()
+-    add_subdirectory("${FBGEMM_SOURCE_DIR}")
+-    set_property(TARGET fbgemm_generic PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    set_property(TARGET fbgemm PROPERTY POSITION_INDEPENDENT_CODE ON)
+-    if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 13.0.0)
+-      # See https://github.com/pytorch/pytorch/issues/74352
+-      target_compile_options_if_supported(asmjit -Wno-deprecated-copy)
+-      target_compile_options_if_supported(asmjit -Wno-unused-but-set-variable)
+-    endif()
+   endif()
+ 
+   if(USE_FBGEMM)
+@@ -1001,7 +966,7 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16)
+     "${FP16_SOURCE_DIR}"
+     "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16")
+ elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16)
+-  add_library(fp16 STATIC "/usr/include/fp16.h")
++  add_library(fp16 STATIC "#FP16_INCLUDE_DIR")
+   set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C)
+ endif()
+ list(APPEND Caffe2_DEPENDENCY_LIBS fp16)
+@@ -1395,7 +1360,6 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE)
+ 
+     # Tensorpipe uses cuda_add_library
+     torch_update_find_cuda_flags()
+-    add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/tensorpipe)
+ 
+     list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe)
+     if(USE_CUDA)
+@@ -1551,7 +1515,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+       set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+     endif()
+   endif()
+-  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+ 
+   add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+   if(NOT USE_SYSTEM_ONNX)
+@@ -1582,7 +1545,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+     endif()
+     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
+     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
+-    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
++    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
+   endif()
+   include_directories(${FOXI_INCLUDE_DIRS})
+   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+@@ -1752,9 +1715,8 @@ if(NOT INTERN_BUILD_MOBILE)
+   endif()
+   if(USE_MKLDNN)
+     include(${CMAKE_CURRENT_LIST_DIR}/public/mkldnn.cmake)
+-    if(MKLDNN_FOUND)
++    if(DNNL_FOUND)
+       set(AT_MKLDNN_ENABLED 1)
+-      include_directories(AFTER SYSTEM ${MKLDNN_INCLUDE_DIR})
+       if(BUILD_CAFFE2_OPS)
+         list(APPEND Caffe2_DEPENDENCY_LIBS caffe2::mkldnn)
+       endif(BUILD_CAFFE2_OPS)
+@@ -1819,7 +1781,7 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
++find_package(fmt)
+ 
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1828,7 +1790,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+ 
+ list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
+diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
+index a41343c..6075bdd 100644
+--- a/cmake/External/nnpack.cmake
++++ b/cmake/External/nnpack.cmake
+@@ -40,7 +40,7 @@ endif()
+ # (3) Android, iOS, Linux, macOS - supported
+ ##############################################################################
+ 
+-if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
++if(FALSE)
+   message(STATUS "Brace yourself, we are building NNPACK")
+   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
+ 
+@@ -114,6 +114,5 @@ endif()
+ # (4) Catch-all: not supported.
+ ##############################################################################
+ 
+-message(WARNING "Unknown platform - I don't know how to build NNPACK. "
+-                "See cmake/External/nnpack.cmake for details.")
+-set(USE_NNPACK OFF)
++set(NNPACK_FOUND TRUE)
++set(USE_NNPACK ON)
+diff --git a/cmake/public/mkldnn.cmake b/cmake/public/mkldnn.cmake
+index 50404d3..ca067f0 100644
+--- a/cmake/public/mkldnn.cmake
++++ b/cmake/public/mkldnn.cmake
+@@ -4,7 +4,7 @@ if(CPU_AARCH64)
+   include(${CMAKE_CURRENT_LIST_DIR}/ComputeLibrary.cmake)
+ endif()
+ 
+-find_package(MKLDNN QUIET)
++find_package(DNNL REQUIRED)
+ 
+ if(NOT TARGET caffe2::mkldnn)
+   add_library(caffe2::mkldnn INTERFACE IMPORTED)
+@@ -15,7 +15,7 @@ set_property(
+   ${MKLDNN_INCLUDE_DIR})
+ set_property(
+   TARGET caffe2::mkldnn PROPERTY INTERFACE_LINK_LIBRARIES
+-  ${MKLDNN_LIBRARIES})
++  DNNL::dnnl)
+ if(BUILD_ONEDNN_GRAPH)
+   if(NOT TARGET caffe2::dnnl_graph)
+     add_library(caffe2::dnnl_graph INTERFACE IMPORTED)
+diff --git a/setup.py b/setup.py
+index 34b2854..5db117f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -418,13 +418,9 @@ def build_deps():
+     # Windows has very poor support for them.
+     sym_files = [
+         'tools/shared/_utils_internal.py',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h',
+-        'torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h',
+     ]
+     orig_files = [
+         'torch/_utils_internal.py',
+-        'third_party/valgrind-headers/callgrind.h',
+-        'third_party/valgrind-headers/valgrind.h',
+     ]
+     for sym_file, orig_file in zip(sym_files, orig_files):
+         same = False
+diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
+index 89c6b91..0c60d08 100644
+--- a/test/cpp/c10d/CMakeLists.txt
++++ b/test/cpp/c10d/CMakeLists.txt
+@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
+   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ endfunction()
+ 
+-c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
+-c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
++c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
++c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
+ if(INSTALL_TEST)
+   install(TARGETS FileStoreTest DESTINATION bin)
+   install(TARGETS TCPStoreTest DESTINATION bin)
+ endif()
+ if(NOT WIN32)
+-  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
++  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
+   if(INSTALL_TEST)
+     install(TARGETS HashStoreTest DESTINATION bin)
+   endif()
+@@ -31,11 +31,11 @@ endif()
+ 
+ if(USE_CUDA)
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
+     endif()
+-    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
++    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
+   endif()
+   if(USE_NCCL AND USE_C10D_NCCL)
+     # NCCL is a private dependency of libtorch, but the tests include some
+@@ -44,10 +44,10 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupNCCLTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     c10d_add_test(
+       ProcessGroupNCCLErrorsTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_nccl)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_nccl)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupNCCLTest DESTINATION bin)
+       install(TARGETS ProcessGroupNCCLErrorsTest DESTINATION bin)
+@@ -61,7 +61,7 @@ if(USE_CUDA)
+     # a private dependency of the tests as well.
+     c10d_add_test(
+       ProcessGroupUCCTest.cpp
+-      torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
++      torch_cpu c10d_cuda_test gtest_main gtest __caffe2_ucc)
+     if(INSTALL_TEST)
+       install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+       install(TARGETS c10d_cuda_test DESTINATION lib)
+@@ -69,7 +69,7 @@ if(USE_CUDA)
+   endif()
+ else()
+   if(USE_GLOO AND USE_C10D_GLOO)
+-    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
++    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
+   endif()
+ endif()
+ 
+diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
+index 7dff706..90b1003 100644
+--- a/test/cpp/tensorexpr/CMakeLists.txt
++++ b/test/cpp/tensorexpr/CMakeLists.txt
+@@ -54,7 +54,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
+ # pthreadpool header. For some build environment we need add the dependency
+ # explicitly.
+ if(USE_PTHREADPOOL)
+-  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
++  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
+ endif()
+ if(USE_CUDA)
+   target_link_libraries(test_tensorexpr PRIVATE
diff --git a/gnu/packages/patches/python-pytorch2-system-libraries.patch b/gnu/packages/patches/python-pytorch2-system-libraries.patch
deleted file mode 100644
index c2c44badbb..0000000000
--- a/gnu/packages/patches/python-pytorch2-system-libraries.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-Use our own googletest rather than the bundled one.
-Get NNPACK to use our own PeachPy rather than the bundled one.
-
-diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
---- a/caffe2/CMakeLists.txt	2023-12-27 12:14:24.308751288 +0100
-+++ b/caffe2/CMakeLists.txt	2023-12-27 12:30:15.941562126 +0100
-@@ -1570,7 +1570,7 @@
-   add_executable(static_runtime_bench "${STATIC_RUNTIME_BENCHMARK_SRCS}")
-   add_executable(static_runtime_test "${STATIC_RUNTIME_TEST_SRCS}")
-   target_link_libraries(static_runtime_bench torch_library benchmark)
--  target_link_libraries(static_runtime_test torch_library gtest_main)
-+  target_link_libraries(static_runtime_test torch_library gtest_main gtest)
- endif()
- 
- if(BUILD_TENSOREXPR_BENCHMARK)
-@@ -1601,7 +1601,7 @@
-   foreach(test_src ${ATen_MOBILE_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${ATen_CPU_INCLUDE})
-@@ -1628,7 +1628,7 @@
-           endif()
-         else()
-           add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}")
--          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main)
-+          target_link_libraries(${test_name}_${CPU_CAPABILITY} torch_library gtest_main gtest)
-         endif()
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<INSTALL_INTERFACE:include>)
-         target_include_directories(${test_name}_${CPU_CAPABILITY} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-@@ -1645,7 +1645,7 @@
-   foreach(test_src ${Caffe2_CPU_TEST_SRCS})
-     get_filename_component(test_name ${test_src} NAME_WE)
-     add_executable(${test_name} "${test_src}")
--    target_link_libraries(${test_name} torch_library gtest_main)
-+    target_link_libraries(${test_name} torch_library gtest_main gtest)
-     target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-     target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-     target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-@@ -1666,7 +1666,7 @@
-     foreach(test_src ${Caffe2_MPS_TEST_SRCS})
-       get_filename_component(test_name ${test_src} NAME_WE)
-       add_executable(${test_name} "${test_src}")
--      target_link_libraries(${test_name} torch_library gtest_main)
-+      target_link_libraries(${test_name} torch_library gtest_main gtest)
-       target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
-       target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
-       target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
-diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
-index 557ab649..ee9cf410 100644
---- a/cmake/Dependencies.cmake
-+++ b/cmake/Dependencies.cmake
-@@ -732,11 +732,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
-   # this shouldn't be necessary anymore.
-   get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
-   set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
--  add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
--  set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
--
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
--  include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
- 
-   # We will not need to test benchmark lib itself.
-   set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
-@@ -1543,7 +1538,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
-     endif()
-     set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
-     message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
--    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
-+    list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
-   endif()
-   include_directories(${FOXI_INCLUDE_DIRS})
-   list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
-diff --git a/cmake/External/nnpack.cmake b/cmake/External/nnpack.cmake
-index a41343cb..6075bdd0 100644
---- a/cmake/External/nnpack.cmake
-+++ b/cmake/External/nnpack.cmake
-@@ -40,7 +40,7 @@ endif()
- # (3) Android, iOS, Linux, macOS - supported
- ##############################################################################
- 
--if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-+if(FALSE)
-   message(STATUS "Brace yourself, we are building NNPACK")
-   set(CAFFE2_THIRD_PARTY_ROOT ${PROJECT_SOURCE_DIR}/third_party)
- 
-@@ -114,6 +114,5 @@ endif()
- # (4) Catch-all: not supported.
- ##############################################################################
- 
--message(WARNING "Unknown platform - I don't know how to build NNPACK. "
--                "See cmake/External/nnpack.cmake for details.")
--set(USE_NNPACK OFF)
-+set(NNPACK_FOUND TRUE)
-+set(USE_NNPACK ON)
-diff --git a/test/cpp/c10d/CMakeLists.txt b/test/cpp/c10d/CMakeLists.txt
-index bf91460c..ef56948f 100644
---- a/test/cpp/c10d/CMakeLists.txt
-+++ b/test/cpp/c10d/CMakeLists.txt
-@@ -16,14 +16,14 @@ function(c10d_add_test test_src)
-   add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
- endfunction()
- 
--c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main)
--c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main)
-+c10d_add_test(FileStoreTest.cpp torch_cpu gtest_main gtest)
-+c10d_add_test(TCPStoreTest.cpp torch_cpu gtest_main gtest)
- if(INSTALL_TEST)
-   install(TARGETS FileStoreTest DESTINATION bin)
-   install(TARGETS TCPStoreTest DESTINATION bin)
- endif()
- if(NOT WIN32)
--  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main)
-+  c10d_add_test(HashStoreTest.cpp torch_cpu gtest_main gtest)
-   if(INSTALL_TEST)
-     install(TARGETS HashStoreTest DESTINATION bin)
-   endif()
-@@ -31,11 +31,11 @@ endif()
- 
- if(USE_CUDA)
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-     if(INSTALL_TEST)
-       install(TARGETS ProcessGroupGlooTest DESTINATION bin)
-     endif()
--    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main)
-+    c10d_add_test(ProcessGroupGlooAsyncTest.cpp torch_cpu c10d_cuda_test gtest_main gtest)
-   endif()
-   if(USE_NCCL AND USE_C10D_NCCL)
-     # NCCL is a private dependency of libtorch, but the tests include some
-@@ -56,7 +56,7 @@ if(USE_CUDA)
-   endif()
- else()
-   if(USE_GLOO AND USE_C10D_GLOO)
--    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main)
-+    c10d_add_test(ProcessGroupGlooTest.cpp torch_cpu gtest_main gtest)
-   endif()
- endif()
- 
-diff --git a/test/cpp/tensorexpr/CMakeLists.txt b/test/cpp/tensorexpr/CMakeLists.txt
-index 8fc5a0a1..643202f6 100644
---- a/test/cpp/tensorexpr/CMakeLists.txt
-+++ b/test/cpp/tensorexpr/CMakeLists.txt
-@@ -53,7 +53,7 @@ target_include_directories(tutorial_tensorexpr PRIVATE ${ATen_CPU_INCLUDE})
- # pthreadpool header. For some build environment we need add the dependency
- # explicitly.
- if(USE_PTHREADPOOL)
--  target_link_libraries(test_tensorexpr PRIVATE pthreadpool_interface)
-+  target_link_libraries(test_tensorexpr PRIVATE pthreadpool)
- endif()
- if(USE_CUDA)
-   target_link_libraries(test_tensorexpr PRIVATE
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 130+ messages in thread

end of thread, other threads:[~2024-03-23 22:41 UTC | newest]

Thread overview: 130+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-06 19:37 [bug#69591] [PATCH 00/31] Unbundle and update python-pytorch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 03/31] gnu: Add python-optree David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 04/31] gnu: Add python-pytest-flakefinder David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 05/31] gnu: Add python-pytest-shard David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 06/31] gnu: Add python-expecttest David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 08/31] gnu: Add miniz David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 09/31] gnu: Add miniz-for-pytorch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 10/31] gnu: Add libnop David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 11/31] gnu: Remove flatbuffers-next-shared David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 18/31] gnu: Add tensorpipe David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 19/31] gnu: Add fbgemm David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 20/31] gnu: Add qnnpack David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 21/31] gnu: Add foxi David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 22/31] gnu: Add ideep-pytorch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 25/31] gnu: Add qnnpack-pytorch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
2024-03-06 19:40 ` [bug#69591] [PATCH 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
2024-03-12 22:46 ` [bug#69591] [PATCH v2 00/31] Unbundle and update python-pytorch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 01/31] gnu: asmjit: Update to commit 3ca5c18 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 02/31] gnu: Add python-typing-extensions-4.10 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 03/31] gnu: Add python-optree David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 04/31] gnu: Add python-pytest-flakefinder David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 05/31] gnu: Add python-pytest-shard David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 06/31] gnu: Add python-expecttest David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 07/31] gnu: Add python-pytest-rerunfailures-13 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 08/31] gnu: Add miniz David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 09/31] gnu: Add miniz-for-pytorch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 10/31] gnu: Add libnop David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 11/31] gnu: Remove flatbuffers-next-shared David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 12/31] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 13/31] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 14/31] gnu: cpuinfo: Update to commit aa4b216 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 15/31] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 16/31] gnu: nnpack: Update to commit 70a77f4 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 17/31] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 18/31] gnu: Add tensorpipe David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 19/31] gnu: Add fbgemm David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 20/31] gnu: Add qnnpack David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 21/31] gnu: Add foxi David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 22/31] gnu: Add ideep-pytorch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 23/31] gnu: xnnpack: Update to commit 51a9875 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 24/31] gnu: Remove xnnpack-for-torch2 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 25/31] gnu: Add qnnpack-pytorch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 26/31] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 27/31] gnu: python-torchvision: Update to 0.17.1 David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 28/31] gnu: Add ideep-pytorch-for-r-torch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 29/31] gnu: Add oneapi-dnnl-for-r-torch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 30/31] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
2024-03-12 22:51   ` [bug#69591] [PATCH v2 31/31] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
2024-03-20 22:37   ` [bug#69591] [PATCH v3 00/32] Unbundle and update python-pytorch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 03/32] gnu: Add python-optree David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 04/32] gnu: Add python-pytest-flakefinder David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 05/32] gnu: Add python-pytest-shard David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 06/32] gnu: Add python-expecttest David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 08/32] gnu: Add miniz David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 09/32] gnu: Add miniz-for-pytorch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 10/32] gnu: Add libnop David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 11/32] gnu: Remove flatbuffers-next-shared David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 18/32] gnu: Add tensorpipe David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 19/32] gnu: Add fbgemm David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 20/32] gnu: Add qnnpack David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 21/32] gnu: Add foxi David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 22/32] gnu: Add ideep-pytorch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 25/32] gnu: Add qnnpack-pytorch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 27/32] gnu: Add python-pytorch-avx David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
2024-03-20 22:38     ` [bug#69591] [PATCH v3 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing
2024-03-23 21:40     ` [bug#69591] [PATCH v4 00/32] Unbundle and update python-pytorch David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 01/32] gnu: asmjit: Update to commit 3ca5c18 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 02/32] gnu: Add python-typing-extensions-4.10 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 03/32] gnu: Add python-optree David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 04/32] gnu: Add python-pytest-flakefinder David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 05/32] gnu: Add python-pytest-shard David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 06/32] gnu: Add python-expecttest David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 07/32] gnu: Add python-pytest-rerunfailures-13 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 08/32] gnu: Add miniz David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 09/32] gnu: Add miniz-for-pytorch David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 10/32] gnu: Add libnop David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 11/32] gnu: Remove flatbuffers-next-shared David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 12/32] gnu: python-flatbuffers-next: Update to 23.5.26 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 13/32] gnu: pthreadpool: Update to commit 178e3e0 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 14/32] gnu: cpuinfo: Update to commit aa4b216 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 15/32] gnu: clog: Add "-DUSE_SYSTEM_LIBS=ON" configure flag David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 16/32] gnu: nnpack: Update to commit 70a77f4 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 17/32] gnu: oneapi-dnnl: Update to 3.3.5 David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 18/32] gnu: Add tensorpipe David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 19/32] gnu: Add fbgemm David Elsing
2024-03-23 22:04       ` [bug#69591] [PATCH v4 20/32] gnu: Add qnnpack David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 21/32] gnu: Add foxi David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 22/32] gnu: Add ideep-pytorch David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 23/32] gnu: xnnpack: Update to commit 51a9875 David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 24/32] gnu: Remove xnnpack-for-torch2 David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 25/32] gnu: Add qnnpack-pytorch David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 26/32] gnu: python-pytorch: Update to 2.2.1 and unbundle dependencies David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 27/32] gnu: Add python-pytorch-avx David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 28/32] gnu: python-torchvision: Update to 0.17.1 David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 29/32] gnu: Add ideep-pytorch-for-r-torch David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 30/32] gnu: Add oneapi-dnnl-for-r-torch David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 31/32] gnu: Add qnnpack-pytorch-for-r-torch David Elsing
2024-03-23 22:05       ` [bug#69591] [PATCH v4 32/32] gnu: python-pytorch-for-r-torch: Adjust to new python-pytorch David Elsing

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).