summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-07-07 12:07:41 +0200
committerRicardo Wurmus <rekado@elephly.net>2022-07-07 14:02:33 +0200
commit87b43ab56214a4fee33814117212df6cfc64f5c0 (patch)
tree84a68e4164c729e96220de4e710139c128b99a3b /gnu/packages
parentc929619b3618736481fef9731ba0963a8277b89b (diff)
downloadguix-87b43ab56214a4fee33814117212df6cfc64f5c0.tar.gz
gnu: xnnpack: Update to 0.0-2.ae108ef.
* gnu/packages/machine-learning.scm (xnnpack): Update to 0.0-2.ae108ef.
* gnu/packages/patches/xnnpack-system-libraries.patch: Update.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/machine-learning.scm6
-rw-r--r--gnu/packages/patches/xnnpack-system-libraries.patch906
2 files changed, 604 insertions, 308 deletions
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index d7a3cecf6a..a901311702 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -2821,8 +2821,8 @@ and Darknet.")
 (define-public xnnpack
   ;; There's currently no tag on this repo.
   (let ((version "0.0")
-        (commit "bbe88243aba847f6a3dd86defec0fea4a0e415a1")
-        (revision "1"))
+        (commit "ae108ef49aa5623b896fc93d4298c49d1750d9ba")
+        (revision "2"))
     (package
       (name "xnnpack")
       (version (git-version version revision commit))
@@ -2833,7 +2833,7 @@ and Darknet.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "19j605x1l2h95mjhcj90zwjh1153pdgmqggl35ya5w0wll628iiz"))
+                  "0q68q2jxiiiblx45q4337k13ppgh5vqjwrwznchcnpb8hawjj3zl"))
                 (patches (search-patches "xnnpack-system-libraries.patch"))))
       (build-system cmake-build-system)
       (arguments
diff --git a/gnu/packages/patches/xnnpack-system-libraries.patch b/gnu/packages/patches/xnnpack-system-libraries.patch
index ed4a5d93d3..bc9225e927 100644
--- a/gnu/packages/patches/xnnpack-system-libraries.patch
+++ b/gnu/packages/patches/xnnpack-system-libraries.patch
@@ -4,19 +4,20 @@ would install googletest's and googlebenchmark's libraries and headers).
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
 index 177b98d5..937385c3 100755
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -4972,9 +4972,6 @@ IF(NOT TARGET pthreadpool)
+--- CMakeLists.txt	2022-07-06 22:35:09.748104656 +0200
++++ CMakeLists.txt	2022-07-06 22:47:34.504666953 +0200
+@@ -6608,10 +6608,6 @@
    ENDIF()
  ENDIF()
  TARGET_LINK_LIBRARIES(XNNPACK PUBLIC pthreadpool)
 -TARGET_LINK_LIBRARIES(all_microkernels PRIVATE pthreadpool)
--TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
 -TARGET_LINK_LIBRARIES(indirection PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(jit PRIVATE pthreadpool)
+-TARGET_LINK_LIBRARIES(packing PRIVATE pthreadpool)
  
  # ---[ Configure FXdiv
  IF(NOT TARGET fxdiv)
-@@ -4993,9 +4990,6 @@ IF(NOT TARGET fxdiv)
+@@ -6630,9 +6626,6 @@
      SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C)
    ENDIF()
  ENDIF()
@@ -26,16 +27,18 @@ index 177b98d5..937385c3 100755
  
  # ---[ Configure FP16
  IF(NOT TARGET fp16)
-@@ -5014,8 +5008,6 @@ IF(NOT TARGET fp16)
+@@ -6651,10 +6644,6 @@
      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(packing PRIVATE fp16)
+-TARGET_LINK_LIBRARIES(indirection PRIVATE fp16)
  
  INSTALL(TARGETS XNNPACK
      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-@@ -5062,7 +5054,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6705,7 +6694,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(add-nd-test PRIVATE src test)
@@ -44,7 +47,25 @@ index 177b98d5..937385c3 100755
    ADD_TEST(add-nd-test add-nd-test)
  
    ADD_EXECUTABLE(argmax-pooling-nhwc-test test/argmax-pooling-nhwc.cc)
-@@ -5134,7 +5126,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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)
@@ -53,7 +74,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(convolution-nhwc-test convolution-nhwc-test)
  
    ADD_EXECUTABLE(convolution-nchw-test test/convolution-nchw.cc)
-@@ -5143,7 +5135,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6795,7 +6784,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(convolution-nchw-test PRIVATE src test)
@@ -62,7 +83,16 @@ index 177b98d5..937385c3 100755
    ADD_TEST(convolution-nchw-test convolution-nchw-test)
  
    ADD_EXECUTABLE(copy-nc-test test/copy-nc.cc)
-@@ -5188,7 +5180,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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)
@@ -71,7 +101,16 @@ index 177b98d5..937385c3 100755
    ADD_TEST(divide-nd-test divide-nd-test)
  
    ADD_EXECUTABLE(elu-nc-test test/elu-nc.cc)
-@@ -5224,7 +5216,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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)
@@ -80,7 +119,7 @@ index 177b98d5..937385c3 100755
    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)
-@@ -5233,7 +5225,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6885,7 +6874,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(global-average-pooling-ncw-test PRIVATE src test)
@@ -89,7 +128,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(global-average-pooling-ncw-test global-average-pooling-ncw-test)
  
    ADD_EXECUTABLE(hardswish-nc-test test/hardswish-nc.cc)
-@@ -5242,7 +5234,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6894,7 +6883,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(hardswish-nc-test PRIVATE src test)
@@ -98,7 +137,25 @@ index 177b98d5..937385c3 100755
    ADD_TEST(hardswish-nc-test hardswish-nc-test)
  
    ADD_EXECUTABLE(leaky-relu-nc-test test/leaky-relu-nc.cc)
-@@ -5269,7 +5261,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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)
@@ -107,7 +164,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(maximum-nd-test maximum-nd-test)
  
    ADD_EXECUTABLE(minimum-nd-test test/minimum-nd.cc)
-@@ -5278,7 +5270,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6930,7 +6919,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(minimum-nd-test PRIVATE src test)
@@ -116,7 +173,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(minimum-nd-test minimum-nd-test)
  
    ADD_EXECUTABLE(multiply-nd-test test/multiply-nd.cc)
-@@ -5287,7 +5279,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -6939,7 +6928,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(multiply-nd-test PRIVATE src test)
@@ -125,16 +182,34 @@ index 177b98d5..937385c3 100755
    ADD_TEST(multiply-nd-test multiply-nd-test)
  
    ADD_EXECUTABLE(negate-nc-test test/negate-nc.cc)
-@@ -5368,7 +5360,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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(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(squared-difference-nd-test squared-difference-nd-test)
+   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(subtract-nd-test test/subtract-nd.cc)
-@@ -5377,7 +5369,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
@@ -142,8 +217,17 @@ index 177b98d5..937385c3 100755
 +  TARGET_LINK_LIBRARIES(subtract-nd-test PRIVATE XNNPACK gtest gtest_main)
    ADD_TEST(subtract-nd-test subtract-nd-test)
  
-   ADD_EXECUTABLE(truncation-nc-test test/truncation-nc.cc)
-@@ -5423,7 +5415,7 @@ IF(XNNPACK_BUILD_TESTS)
+   ADD_EXECUTABLE(tanh-nc-test test/tanh-nc.cc)
+@@ -7084,7 +7073,7 @@
+     CXX_STANDARD_REQUIRED YES
+     CXX_EXTENSIONS YES)
+   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)
@@ -152,7 +236,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5432,7 +5424,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7102,7 +7091,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-gavgpool-minmax-test PRIVATE include src test)
@@ -161,25 +245,43 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5441,7 +5433,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7111,7 +7100,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    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)
-+  TARGET_LINK_LIBRARIES(f16-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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_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>)
-@@ -5450,7 +5442,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7129,7 +7118,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    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)
-+  TARGET_LINK_LIBRARIES(f16-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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_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>)
-@@ -5459,7 +5451,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7147,7 +7136,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-spmm-minmax-test PRIVATE include src test)
@@ -188,7 +290,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5468,7 +5460,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7156,7 +7145,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vadd-minmax-test PRIVATE include src test)
@@ -197,7 +299,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5477,7 +5469,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7165,7 +7154,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vaddc-minmax-test PRIVATE include src test)
@@ -206,16 +308,25 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vaddc-minmax-test f16-vaddc-minmax-test)
  
    ADD_EXECUTABLE(f16-vclamp-test test/f16-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5486,7 +5478,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7174,7 +7163,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    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_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>)
-@@ -5504,7 +5496,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7183,7 +7172,7 @@
+     CXX_STANDARD_REQUIRED YES
+     CXX_EXTENSIONS YES)
+   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_INCLUDE_DIRECTORIES(f16-vdivc-minmax-test PRIVATE include src test)
@@ -224,7 +335,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5513,7 +5505,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7201,7 +7190,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vrdivc-minmax-test PRIVATE include src test)
@@ -233,7 +344,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vrdivc-minmax-test f16-vrdivc-minmax-test)
  
    ADD_EXECUTABLE(f16-vhswish-test test/f16-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5522,7 +5514,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7210,7 +7199,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vhswish-test PRIVATE include src test)
@@ -241,8 +352,17 @@ index 177b98d5..937385c3 100755
 +  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_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>)
-@@ -5531,7 +5523,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7228,7 +7217,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmax-test PRIVATE include src test)
@@ -251,7 +371,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vmax-test f16-vmax-test)
  
    ADD_EXECUTABLE(f16-vmaxc-test test/f16-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5540,7 +5532,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7237,7 +7226,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmaxc-test PRIVATE include src test)
@@ -260,7 +380,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vmaxc-test f16-vmaxc-test)
  
    ADD_EXECUTABLE(f16-vmin-test test/f16-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5549,7 +5541,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7246,7 +7235,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmin-test PRIVATE include src test)
@@ -269,7 +389,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vmin-test f16-vmin-test)
  
    ADD_EXECUTABLE(f16-vminc-test test/f16-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5558,7 +5550,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7255,7 +7244,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vminc-test PRIVATE include src test)
@@ -278,7 +398,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vminc-test f16-vminc-test)
  
    ADD_EXECUTABLE(f16-vmul-minmax-test test/f16-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5567,7 +5559,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7264,7 +7253,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmul-minmax-test PRIVATE include src test)
@@ -287,7 +407,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5576,7 +5568,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7273,7 +7262,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulc-minmax-test PRIVATE include src test)
@@ -296,7 +416,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5585,7 +5577,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7282,7 +7271,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vmulcaddc-minmax-test PRIVATE include src test)
@@ -305,7 +425,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vmulcaddc-minmax-test f16-vmulcaddc-minmax-test)
  
    ADD_EXECUTABLE(f16-prelu-test test/f16-prelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5594,7 +5586,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7291,7 +7280,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-prelu-test PRIVATE include src test)
@@ -314,7 +434,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-prelu-test f16-prelu-test)
  
    ADD_EXECUTABLE(f16-vsub-minmax-test test/f16-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5603,7 +5595,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7300,7 +7289,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vsub-minmax-test PRIVATE include src test)
@@ -323,7 +443,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5612,7 +5604,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7309,7 +7298,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vsubc-minmax-test PRIVATE include src test)
@@ -332,7 +452,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5621,7 +5613,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7318,7 +7307,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f16-vrsubc-minmax-test PRIVATE include src test)
@@ -341,7 +461,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f16-vrsubc-minmax-test f16-vrsubc-minmax-test)
  
    ADD_EXECUTABLE(f32-argmaxpool-test test/f32-argmaxpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5630,7 +5622,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7327,7 +7316,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-argmaxpool-test PRIVATE include src test)
@@ -350,7 +470,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-argmaxpool-test f32-argmaxpool-test)
  
    ADD_EXECUTABLE(f32-avgpool-minmax-test test/f32-avgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5639,7 +5631,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7336,7 +7325,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-avgpool-minmax-test PRIVATE include src test)
@@ -359,7 +479,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5648,7 +5640,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7345,7 +7334,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc-test PRIVATE include src test)
@@ -368,7 +488,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5657,7 +5649,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7354,7 +7343,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-conv-hwc2chw-test PRIVATE include src test)
@@ -377,7 +497,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5666,7 +5658,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7363,7 +7352,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv-test PRIVATE include src test)
@@ -386,7 +506,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-dwconv-test f32-dwconv-test)
  
    ADD_EXECUTABLE(f32-dwconv2d-chw-test test/f32-dwconv2d-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5675,7 +5667,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7372,7 +7361,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv2d-chw-test PRIVATE include src test)
@@ -395,7 +515,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5684,7 +5676,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7381,7 +7370,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-dwconv-minmax-test PRIVATE include src test)
@@ -403,8 +523,35 @@ index 177b98d5..937385c3 100755
 +  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_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_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_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>)
-@@ -5693,7 +5685,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7417,7 +7406,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-cw-test PRIVATE include src test)
@@ -413,7 +560,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5702,7 +5694,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7426,7 +7415,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-gavgpool-minmax-test PRIVATE include src test)
@@ -421,44 +568,44 @@ index 177b98d5..937385c3 100755
 +  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5711,7 +5703,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-gemm-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5720,7 +5712,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-gemm-relu-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5729,7 +5721,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-gemm-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5738,7 +5730,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-gemminc-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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>)
-@@ -5747,7 +5739,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7471,7 +7460,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-test PRIVATE include src test)
@@ -467,7 +614,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-ibilinear-test f32-ibilinear-test)
  
    ADD_EXECUTABLE(f32-ibilinear-chw-test test/f32-ibilinear-chw.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5756,7 +5748,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7480,7 +7469,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-ibilinear-chw-test PRIVATE include src test)
@@ -475,35 +622,35 @@ index 177b98d5..937385c3 100755
 +  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5765,7 +5757,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-igemm-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5774,7 +5766,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-igemm-relu-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -5787,7 +5779,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(f32-igemm-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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>)
-@@ -5796,7 +5788,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7520,7 +7509,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-maxpool-minmax-test PRIVATE include src test)
@@ -512,7 +659,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5805,7 +5797,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7529,7 +7518,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-pavgpool-minmax-test PRIVATE include src test)
@@ -521,16 +668,16 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5814,7 +5806,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -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)
-+  TARGET_LINK_LIBRARIES(f32-ppmm-minmax-test PRIVATE cpuinfo gtest gtest_main)
+-  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>)
-@@ -5823,7 +5815,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7547,7 +7536,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-prelu-test PRIVATE include src test)
@@ -539,7 +686,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-prelu-test f32-prelu-test)
  
    ADD_EXECUTABLE(f32-raddexpminusmax-test test/f32-raddexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5832,7 +5824,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7556,7 +7545,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-raddexpminusmax-test PRIVATE include src test)
@@ -548,7 +695,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-raddexpminusmax-test f32-raddexpminusmax-test)
  
    ADD_EXECUTABLE(f32-raddextexp-test test/f32-raddextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5841,7 +5833,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7565,7 +7554,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-raddextexp-test PRIVATE include src test)
@@ -557,7 +704,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-raddextexp-test f32-raddextexp-test)
  
    ADD_EXECUTABLE(f32-raddstoreexpminusmax-test test/f32-raddstoreexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5850,7 +5842,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7574,7 +7563,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-raddstoreexpminusmax-test PRIVATE include src test)
@@ -566,7 +713,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-raddstoreexpminusmax-test f32-raddstoreexpminusmax-test)
  
    ADD_EXECUTABLE(f32-rmax-test test/f32-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5859,7 +5851,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7583,7 +7572,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-rmax-test PRIVATE include src test)
@@ -575,7 +722,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-rmax-test f32-rmax-test)
  
    ADD_EXECUTABLE(f32-spmm-minmax-test test/f32-spmm-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5868,7 +5860,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7592,7 +7581,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-spmm-minmax-test PRIVATE include src test)
@@ -584,7 +731,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-spmm-minmax-test f32-spmm-minmax-test)
  
    ADD_EXECUTABLE(f32-vabs-test test/f32-vabs.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5877,7 +5869,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7601,7 +7590,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vabs-test PRIVATE include src test)
@@ -593,7 +740,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vabs-test f32-vabs-test)
  
    ADD_EXECUTABLE(f32-vadd-test test/f32-vadd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5886,7 +5878,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7610,7 +7599,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-test PRIVATE include src test)
@@ -602,7 +749,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vadd-test f32-vadd-test)
  
    ADD_EXECUTABLE(f32-vadd-minmax-test test/f32-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5895,7 +5887,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7619,7 +7608,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-minmax-test PRIVATE include src test)
@@ -611,7 +758,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5904,7 +5896,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7628,7 +7617,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vadd-relu-test PRIVATE include src test)
@@ -620,7 +767,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vadd-relu-test f32-vadd-relu-test)
  
    ADD_EXECUTABLE(f32-vaddc-test test/f32-vaddc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5913,7 +5905,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7637,7 +7626,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-test PRIVATE include src test)
@@ -629,7 +776,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vaddc-test f32-vaddc-test)
  
    ADD_EXECUTABLE(f32-vaddc-minmax-test test/f32-vaddc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5922,7 +5914,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7646,7 +7635,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-minmax-test PRIVATE include src test)
@@ -638,7 +785,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5931,7 +5923,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7655,7 +7644,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vaddc-relu-test PRIVATE include src test)
@@ -647,7 +794,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vaddc-relu-test f32-vaddc-relu-test)
  
    ADD_EXECUTABLE(f32-vclamp-test test/f32-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5940,7 +5932,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7664,7 +7653,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vclamp-test PRIVATE include src test)
@@ -656,7 +803,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vclamp-test f32-vclamp-test)
  
    ADD_EXECUTABLE(f32-vhswish-test test/f32-vhswish.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5949,7 +5941,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7673,7 +7662,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vhswish-test PRIVATE include src test)
@@ -665,7 +812,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vhswish-test f32-vhswish-test)
  
    ADD_EXECUTABLE(f32-vdiv-test test/f32-vdiv.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5958,7 +5950,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7682,7 +7671,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-test PRIVATE include src test)
@@ -674,7 +821,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vdiv-test f32-vdiv-test)
  
    ADD_EXECUTABLE(f32-vdiv-minmax-test test/f32-vdiv-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5967,7 +5959,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7691,7 +7680,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-minmax-test PRIVATE include src test)
@@ -683,7 +830,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -5976,7 +5968,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7700,7 +7689,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdiv-relu-test PRIVATE include src test)
@@ -692,7 +839,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vdiv-relu-test f32-vdiv-relu-test)
  
    ADD_EXECUTABLE(f32-vdivc-test test/f32-vdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5985,7 +5977,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7709,7 +7698,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-test PRIVATE include src test)
@@ -701,7 +848,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vdivc-test f32-vdivc-test)
  
    ADD_EXECUTABLE(f32-vdivc-minmax-test test/f32-vdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -5994,7 +5986,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7718,7 +7707,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-minmax-test PRIVATE include src test)
@@ -710,7 +857,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6003,7 +5995,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7727,7 +7716,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vdivc-relu-test PRIVATE include src test)
@@ -719,7 +866,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vdivc-relu-test f32-vdivc-relu-test)
  
    ADD_EXECUTABLE(f32-vrdivc-test test/f32-vrdivc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6012,7 +6004,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7736,7 +7725,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-test PRIVATE include src test)
@@ -728,7 +875,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrdivc-test f32-vrdivc-test)
  
    ADD_EXECUTABLE(f32-vrdivc-minmax-test test/f32-vrdivc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6021,7 +6013,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7745,7 +7734,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-minmax-test PRIVATE include src test)
@@ -737,7 +884,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6030,7 +6022,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7754,7 +7743,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrdivc-relu-test PRIVATE include src test)
@@ -746,7 +893,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrdivc-relu-test f32-vrdivc-relu-test)
  
    ADD_EXECUTABLE(f32-velu-test test/f32-velu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6039,7 +6031,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7763,7 +7752,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-velu-test PRIVATE include src test)
@@ -755,7 +902,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-velu-test f32-velu-test)
  
    ADD_EXECUTABLE(f32-vlrelu-test test/f32-vlrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6048,7 +6040,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7772,7 +7761,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vlrelu-test PRIVATE include src test)
@@ -764,7 +911,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vlrelu-test f32-vlrelu-test)
  
    ADD_EXECUTABLE(f32-vmax-test test/f32-vmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6057,7 +6049,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7781,7 +7770,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmax-test PRIVATE include src test)
@@ -773,7 +920,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmax-test f32-vmax-test)
  
    ADD_EXECUTABLE(f32-vmaxc-test test/f32-vmaxc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6066,7 +6058,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7790,7 +7779,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmaxc-test PRIVATE include src test)
@@ -782,7 +929,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmaxc-test f32-vmaxc-test)
  
    ADD_EXECUTABLE(f32-vmin-test test/f32-vmin.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6075,7 +6067,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7799,7 +7788,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmin-test PRIVATE include src test)
@@ -791,7 +938,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmin-test f32-vmin-test)
  
    ADD_EXECUTABLE(f32-vminc-test test/f32-vminc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6084,7 +6076,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7808,7 +7797,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vminc-test PRIVATE include src test)
@@ -800,7 +947,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vminc-test f32-vminc-test)
  
    ADD_EXECUTABLE(f32-vmul-test test/f32-vmul.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6093,7 +6085,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7817,7 +7806,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-test PRIVATE include src test)
@@ -809,7 +956,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmul-test f32-vmul-test)
  
    ADD_EXECUTABLE(f32-vmul-minmax-test test/f32-vmul-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6102,7 +6094,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7826,7 +7815,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-minmax-test PRIVATE include src test)
@@ -818,7 +965,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6111,7 +6103,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7835,7 +7824,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmul-relu-test PRIVATE include src test)
@@ -827,7 +974,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmul-relu-test f32-vmul-relu-test)
  
    ADD_EXECUTABLE(f32-vmulc-test test/f32-vmulc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6120,7 +6112,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7844,7 +7833,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-test PRIVATE include src test)
@@ -836,7 +983,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmulc-test f32-vmulc-test)
  
    ADD_EXECUTABLE(f32-vmulc-minmax-test test/f32-vmulc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6129,7 +6121,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7853,7 +7842,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-minmax-test PRIVATE include src test)
@@ -845,7 +992,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6138,7 +6130,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7862,7 +7851,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulc-relu-test PRIVATE include src test)
@@ -854,7 +1001,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6147,7 +6139,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7871,7 +7860,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vmulcaddc-minmax-test PRIVATE include src test)
@@ -863,7 +1010,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vmulcaddc-minmax-test f32-vmulcaddc-minmax-test)
  
    ADD_EXECUTABLE(f32-vneg-test test/f32-vneg.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6156,7 +6148,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7880,7 +7869,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vneg-test PRIVATE include src test)
@@ -872,7 +1019,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vneg-test f32-vneg-test)
  
    ADD_EXECUTABLE(f32-vrelu-test test/f32-vrelu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6165,7 +6157,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7889,7 +7878,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrelu-test PRIVATE include src test)
@@ -881,7 +1028,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrelu-test f32-vrelu-test)
  
    ADD_EXECUTABLE(f32-vrndne-test test/f32-vrndne.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6174,7 +6166,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7898,7 +7887,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndne-test PRIVATE include src test)
@@ -890,7 +1037,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrndne-test f32-vrndne-test)
  
    ADD_EXECUTABLE(f32-vrndz-test test/f32-vrndz.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6183,7 +6175,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7907,7 +7896,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndz-test PRIVATE include src test)
@@ -899,7 +1046,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrndz-test f32-vrndz-test)
  
    ADD_EXECUTABLE(f32-vrndu-test test/f32-vrndu.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6192,7 +6184,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7916,7 +7905,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndu-test PRIVATE include src test)
@@ -908,7 +1055,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrndu-test f32-vrndu-test)
  
    ADD_EXECUTABLE(f32-vrndd-test test/f32-vrndd.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6201,7 +6193,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7925,7 +7914,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrndd-test PRIVATE include src test)
@@ -917,7 +1064,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrndd-test f32-vrndd-test)
  
    ADD_EXECUTABLE(f32-vscaleexpminusmax-test test/f32-vscaleexpminusmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6210,7 +6202,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7934,7 +7923,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vscaleexpminusmax-test PRIVATE include src test)
@@ -926,7 +1073,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vscaleexpminusmax-test f32-vscaleexpminusmax-test)
  
    ADD_EXECUTABLE(f32-vscaleextexp-test test/f32-vscaleextexp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6219,7 +6211,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7943,7 +7932,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vscaleextexp-test PRIVATE include src test)
@@ -935,7 +1082,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vscaleextexp-test f32-vscaleextexp-test)
  
    ADD_EXECUTABLE(f32-vsigmoid-test test/f32-vsigmoid.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6228,7 +6220,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7952,7 +7941,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsigmoid-test PRIVATE include src test)
@@ -944,7 +1091,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsigmoid-test f32-vsigmoid-test)
  
    ADD_EXECUTABLE(f32-vsqr-test test/f32-vsqr.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6237,7 +6229,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7961,7 +7950,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqr-test PRIVATE include src test)
@@ -953,7 +1100,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsqr-test f32-vsqr-test)
  
    ADD_EXECUTABLE(f32-vsqrdiff-test test/f32-vsqrdiff.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6246,7 +6238,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7970,7 +7959,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiff-test PRIVATE include src test)
@@ -962,7 +1109,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsqrdiff-test f32-vsqrdiff-test)
  
    ADD_EXECUTABLE(f32-vsqrdiffc-test test/f32-vsqrdiffc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6255,7 +6247,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7979,7 +7968,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrdiffc-test PRIVATE include src test)
@@ -971,7 +1118,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsqrdiffc-test f32-vsqrdiffc-test)
  
    ADD_EXECUTABLE(f32-vsqrt-test test/f32-vsqrt.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6264,7 +6256,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7988,7 +7977,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsqrt-test PRIVATE include src test)
@@ -980,7 +1127,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsqrt-test f32-vsqrt-test)
  
    ADD_EXECUTABLE(f32-vsub-test test/f32-vsub.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6273,7 +6265,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -7997,7 +7986,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-test PRIVATE include src test)
@@ -989,7 +1136,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsub-test f32-vsub-test)
  
    ADD_EXECUTABLE(f32-vsub-minmax-test test/f32-vsub-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6282,7 +6274,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8006,7 +7995,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-minmax-test PRIVATE include src test)
@@ -998,7 +1145,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6291,7 +6283,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8015,7 +8004,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsub-relu-test PRIVATE include src test)
@@ -1007,7 +1154,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsub-relu-test f32-vsub-relu-test)
  
    ADD_EXECUTABLE(f32-vsubc-test test/f32-vsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6300,7 +6292,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8024,7 +8013,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-test PRIVATE include src test)
@@ -1016,7 +1163,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsubc-test f32-vsubc-test)
  
    ADD_EXECUTABLE(f32-vsubc-minmax-test test/f32-vsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6309,7 +6301,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8033,7 +8022,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-minmax-test PRIVATE include src test)
@@ -1025,7 +1172,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6318,7 +6310,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8042,7 +8031,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vsubc-relu-test PRIVATE include src test)
@@ -1034,7 +1181,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vsubc-relu-test f32-vsubc-relu-test)
  
    ADD_EXECUTABLE(f32-vrsubc-test test/f32-vrsubc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6327,7 +6319,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8051,7 +8040,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-test PRIVATE include src test)
@@ -1043,7 +1190,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(f32-vrsubc-test f32-vrsubc-test)
  
    ADD_EXECUTABLE(f32-vrsubc-minmax-test test/f32-vrsubc-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6336,7 +6328,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8060,7 +8049,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-minmax-test PRIVATE include src test)
@@ -1052,7 +1199,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6345,7 +6337,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8069,7 +8058,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(f32-vrsubc-relu-test PRIVATE include src test)
@@ -1061,7 +1208,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6354,7 +6346,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8078,7 +8067,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qc8-dwconv-minmax-fp32-test PRIVATE include src test)
@@ -1069,26 +1216,26 @@ index 177b98d5..937385c3 100755
 +  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6363,7 +6355,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qc8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6372,7 +6364,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qc8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
+-  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>)
-@@ -6381,7 +6373,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8105,7 +8094,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-fp32-test PRIVATE include src test)
@@ -1096,17 +1243,8 @@ index 177b98d5..937385c3 100755
 +  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-gemmlowp-test test/qs8-dwconv-minmax-gemmlowp.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6390,7 +6382,7 @@ IF(XNNPACK_BUILD_TESTS)
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-gemmlowp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-gemmlowp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-dwconv-minmax-gemmlowp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-dwconv-minmax-gemmlowp-test qs8-dwconv-minmax-gemmlowp-test)
- 
    ADD_EXECUTABLE(qs8-dwconv-minmax-rndnu-test test/qs8-dwconv-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6399,7 +6391,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8114,7 +8103,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-dwconv-minmax-rndnu-test PRIVATE include src test)
@@ -1114,71 +1252,80 @@ index 177b98d5..937385c3 100755
 +  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-gavgpool-minmax-test test/qs8-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6408,7 +6400,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_INCLUDE_DIRECTORIES(qs8-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gavgpool-test qs8-gavgpool-minmax-test)
+   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-gemm-minmax-fp32-test test/qs8-gemm-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6417,7 +6409,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_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)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gemm-minmax-fp32-test qs8-gemm-minmax-fp32-test)
+   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-gemm-minmax-gemmlowp-test test/qs8-gemm-minmax-gemmlowp.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6426,7 +6418,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_INCLUDE_DIRECTORIES(qs8-gemm-minmax-gemmlowp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-gemmlowp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-gemmlowp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-gemm-minmax-gemmlowp-test qs8-gemm-minmax-gemmlowp-test)
+   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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6435,7 +6427,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qs8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6444,7 +6436,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
+-  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-gemmlowp-test test/qs8-igemm-minmax-gemmlowp.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6453,7 +6445,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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-gemmlowp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-gemmlowp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-gemmlowp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-igemm-minmax-gemmlowp-test qs8-igemm-minmax-gemmlowp-test)
+   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-igemm-minmax-rndnu-test test/qs8-igemm-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6462,7 +6454,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_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)
-+  TARGET_LINK_LIBRARIES(qs8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qs8-igemm-minmax-rndnu-test qs8-igemm-minmax-rndnu-test)
+   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>)
-@@ -6471,7 +6463,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8195,7 +8184,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vadd-minmax-test PRIVATE include src test)
@@ -1187,7 +1334,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6480,7 +6472,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8204,7 +8193,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qs8-vaddc-minmax-test PRIVATE include src test)
@@ -1195,8 +1342,26 @@ index 177b98d5..937385c3 100755
 +  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_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_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>)
-@@ -6489,7 +6481,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8231,7 +8220,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-avgpool-minmax-test PRIVATE include src test)
@@ -1205,7 +1370,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6498,7 +6490,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8240,7 +8229,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-fp32-test PRIVATE include src test)
@@ -1214,7 +1379,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6507,7 +6499,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8249,7 +8238,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-dwconv-minmax-rndnu-test PRIVATE include src test)
@@ -1222,71 +1387,71 @@ index 177b98d5..937385c3 100755
 +  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-gavgpool-minmax-test test/qu8-gavgpool-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6516,7 +6508,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_INCLUDE_DIRECTORIES(qu8-gavgpool-minmax-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gavgpool-minmax-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gavgpool-test qu8-gavgpool-minmax-test)
+   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-gemm-minmax-fp32-test test/qu8-gemm-minmax-fp32.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6525,7 +6517,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_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)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gemm-minmax-fp32-test qu8-gemm-minmax-fp32-test)
+   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-gemm-minmax-gemmlowp-test test/qu8-gemm-minmax-gemmlowp.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6534,7 +6526,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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_INCLUDE_DIRECTORIES(qu8-gemm-minmax-gemmlowp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-gemmlowp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-gemmlowp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-gemm-minmax-gemmlowp-test qu8-gemm-minmax-gemmlowp-test)
+   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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6543,7 +6535,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qu8-gemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
+-  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 $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6552,7 +6544,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-fp32-test PRIVATE cpuinfo gtest gtest_main)
+-  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-gemmlowp-test test/qu8-igemm-minmax-gemmlowp.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6561,7 +6553,7 @@ IF(XNNPACK_BUILD_TESTS)
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(qu8-igemm-minmax-gemmlowp-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-gemmlowp-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-gemmlowp-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(qu8-igemm-minmax-gemmlowp-test qu8-igemm-minmax-gemmlowp-test)
- 
-   ADD_EXECUTABLE(qu8-igemm-minmax-rndnu-test test/qu8-igemm-minmax-rndnu.cc $<TARGET_OBJECTS:all_microkernels> $<TARGET_OBJECTS:packing>)
-@@ -6570,7 +6562,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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)
-+  TARGET_LINK_LIBRARIES(qu8-igemm-minmax-rndnu-test PRIVATE cpuinfo gtest gtest_main)
+-  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>)
-@@ -6579,7 +6571,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8321,7 +8310,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-requantization-test PRIVATE include src test)
@@ -1295,7 +1460,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(qu8-requantization-test qu8-requantization-test)
  
    ADD_EXECUTABLE(qu8-vadd-minmax-test test/qu8-vadd-minmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6588,7 +6580,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8330,7 +8319,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vadd-minmax-test PRIVATE include src test)
@@ -1304,7 +1469,7 @@ index 177b98d5..937385c3 100755
    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>)
-@@ -6597,7 +6589,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8339,7 +8328,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(qu8-vaddc-minmax-test PRIVATE include src test)
@@ -1312,8 +1477,71 @@ index 177b98d5..937385c3 100755
 +  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_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_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_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_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_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_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_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>)
-@@ -6606,7 +6598,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8411,7 +8400,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(u8-lut32norm-test PRIVATE include src test)
@@ -1321,8 +1549,17 @@ index 177b98d5..937385c3 100755
 +  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_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>)
-@@ -6615,7 +6607,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8429,7 +8418,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(u8-maxpool-minmax-test PRIVATE include src test)
@@ -1331,7 +1568,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(u8-maxpool-minmax-test u8-maxpool-minmax-test)
  
    ADD_EXECUTABLE(u8-rmax-test test/u8-rmax.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6624,7 +6616,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8438,7 +8427,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(u8-rmax-test PRIVATE include src test)
@@ -1340,7 +1577,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(u8-rmax-test u8-rmax-test)
  
    ADD_EXECUTABLE(u8-vclamp-test test/u8-vclamp.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6633,7 +6625,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8447,7 +8436,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(u8-vclamp-test PRIVATE include src test)
@@ -1348,17 +1585,26 @@ index 177b98d5..937385c3 100755
 +  TARGET_LINK_LIBRARIES(u8-vclamp-test PRIVATE cpuinfo gtest gtest_main)
    ADD_TEST(u8-vclamp-test u8-vclamp-test)
  
-   ADD_EXECUTABLE(x32-fill-test test/x32-fill.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6642,7 +6634,7 @@ IF(XNNPACK_BUILD_TESTS)
+   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(x32-fill-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-fill-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-fill-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-fill-test x32-fill-test)
+   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>)
-@@ -6651,7 +6643,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8474,7 +8463,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(x32-packx-test PRIVATE include src test)
@@ -1366,17 +1612,8 @@ index 177b98d5..937385c3 100755
 +  TARGET_LINK_LIBRARIES(x32-packx-test PRIVATE cpuinfo gtest gtest_main)
    ADD_TEST(x32-packx-test x32-packx-test)
  
-   ADD_EXECUTABLE(x32-pad-test test/x32-pad.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6660,7 +6652,7 @@ IF(XNNPACK_BUILD_TESTS)
-     CXX_STANDARD_REQUIRED YES
-     CXX_EXTENSIONS YES)
-   TARGET_INCLUDE_DIRECTORIES(x32-pad-test PRIVATE include src test)
--  TARGET_LINK_LIBRARIES(x32-pad-test PRIVATE cpuinfo fp16 pthreadpool gtest gtest_main)
-+  TARGET_LINK_LIBRARIES(x32-pad-test PRIVATE cpuinfo gtest gtest_main)
-   ADD_TEST(x32-pad-test x32-pad-test)
- 
    ADD_EXECUTABLE(x32-unpool-test test/x32-unpool.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6669,7 +6661,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8483,7 +8472,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(x32-unpool-test PRIVATE include src test)
@@ -1385,7 +1622,7 @@ index 177b98d5..937385c3 100755
    ADD_TEST(x32-unpool-test x32-unpool-test)
  
    ADD_EXECUTABLE(x32-depthtospace2d-chw2hwc-test test/x32-depthtospace2d-chw2hwc.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6678,7 +6670,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8492,7 +8481,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(x32-depthtospace2d-chw2hwc-test PRIVATE include src test)
@@ -1393,8 +1630,17 @@ index 177b98d5..937385c3 100755
 +  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>)
-@@ -6687,7 +6679,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8510,7 +8499,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(x32-zip-test PRIVATE include src test)
@@ -1402,8 +1648,17 @@ index 177b98d5..937385c3 100755
 +  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_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>)
-@@ -6696,7 +6688,7 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8528,7 +8517,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    TARGET_INCLUDE_DIRECTORIES(x8-lut-test PRIVATE include src test)
@@ -1412,29 +1667,70 @@ index 177b98d5..937385c3 100755
    ADD_TEST(x8-lut-test x8-lut-test)
  
    ADD_EXECUTABLE(x8-zip-test test/x8-zip.cc $<TARGET_OBJECTS:all_microkernels>)
-@@ -6705,20 +6697,12 @@ IF(XNNPACK_BUILD_TESTS)
+@@ -8537,7 +8526,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS YES)
    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)
- ENDIF()
  
- # ---[ XNNPACK microbenchmarks
- IF(XNNPACK_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()
--
-   ADD_LIBRARY(bench-utils bench/utils.cc)
-   SET_TARGET_PROPERTIES(bench-utils PROPERTIES
-     CXX_STANDARD 11
-@@ -6783,7 +6767,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+   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_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_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_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_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_INCLUDE_DIRECTORIES(f32-exp-eval PRIVATE include src)
@@ -1443,7 +1739,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-expm1minus-eval eval/f32-expm1minus.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-expm1minus-eval PROPERTIES
-@@ -6791,7 +6775,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8722,7 +8711,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-expm1minus-eval PRIVATE include src)
@@ -1452,7 +1748,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-expminus-eval eval/f32-expminus.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-expminus-eval PROPERTIES
-@@ -6799,7 +6783,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8730,7 +8719,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-expminus-eval PRIVATE include src)
@@ -1461,7 +1757,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-roundne-eval eval/f32-roundne.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-roundne-eval PROPERTIES
-@@ -6807,7 +6791,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8738,7 +8727,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-roundne-eval PRIVATE include src)
@@ -1470,7 +1766,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-roundd-eval eval/f32-roundd.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-roundd-eval PROPERTIES
-@@ -6815,7 +6799,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8746,7 +8735,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-roundd-eval PRIVATE include src)
@@ -1479,7 +1775,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-roundu-eval eval/f32-roundu.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-roundu-eval PROPERTIES
-@@ -6823,7 +6807,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8754,7 +8743,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-roundu-eval PRIVATE include src)
@@ -1488,7 +1784,7 @@ index 177b98d5..937385c3 100755
  
    ADD_EXECUTABLE(f32-roundz-eval eval/f32-roundz.cc $<TARGET_OBJECTS:all_microkernels>)
    SET_TARGET_PROPERTIES(f32-roundz-eval PROPERTIES
-@@ -6831,7 +6815,7 @@ IF(XNNPACK_BUILD_BENCHMARKS)
+@@ -8762,7 +8751,7 @@
      CXX_STANDARD_REQUIRED YES
      CXX_EXTENSIONS NO)
    TARGET_INCLUDE_DIRECTORIES(f32-roundz-eval PRIVATE include src)