diff --git a/src/params-init.c b/src/params-init.c
index 382845c..ec9e994 100644
--- a/src/params-init.c
+++ b/src/params-init.c
@@ -1046,6 +1046,17 @@
 }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
 
+void xnn_init_f32_scaleminmax_scalar_params(
+  union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
+  float scale,
+  float min,
+  float max)
+{
+  params->scalar.scale = scale;
+  params->scalar.min = min;
+  params->scalar.max = max;
+}
+
 void xnn_init_f32_scaleminmax_params(
   union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
   float scale,
@@ -1141,17 +1152,6 @@
   #endif
 }
 
-void xnn_init_scalar_f32_scaleminmax_params(
-  union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
-  float scale,
-  float min,
-  float max)
-{
-  params->scalar.scale = scale;
-  params->scalar.min = min;
-  params->scalar.max = max;
-}
-
 void xnn_init_scalar_f32_gavgpool_params(
   union xnn_f32_gavgpool_params params[XNN_MIN_ELEMENTS(1)],
   float multiplier,
diff --git a/src/xnnpack/params-init.h b/src/xnnpack/params-init.h
index f998ab7..3f8bd43 100644
--- a/src/xnnpack/params-init.h
+++ b/src/xnnpack/params-init.h
@@ -182,6 +182,12 @@
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
 
 
+XNN_INTERNAL void xnn_init_f32_scaleminmax_scalar_params(
+  union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
+  float scale,
+  float min,
+  float max);
+
 XNN_INTERNAL void xnn_init_f32_scaleminmax_params(
   union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
   float scale,
@@ -200,12 +206,6 @@
   float multiplier,
   uint32_t width);
 
-XNN_INTERNAL void xnn_init_scalar_f32_scaleminmax_params(
-  union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
-  float scale,
-  float min,
-  float max);
-
 XNN_INTERNAL void xnn_init_scalar_f32_gavgpool_params(
   union xnn_f32_gavgpool_params params[XNN_MIN_ELEMENTS(1)],
   float multiplier,
diff --git a/src/xnnpack/params.h b/src/xnnpack/params.h
index 3e07490..bc6b2ce 100644
--- a/src/xnnpack/params.h
+++ b/src/xnnpack/params.h
@@ -3277,6 +3277,22 @@
   uint8_t output_min,
   uint8_t output_max);
 
+typedef void (*xnn_init_qs8_avgpool_minmax_params_fn)(
+  union xnn_qs8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
+  int32_t bias,
+  float scale,
+  int8_t output_zero_point,
+  int8_t output_min,
+  int8_t output_max);
+
+typedef void (*xnn_init_qu8_avgpool_minmax_params_fn)(
+  union xnn_qu8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)],
+  int32_t bias,
+  float scale,
+  uint8_t output_zero_point,
+  uint8_t output_min,
+  uint8_t output_max);
+
 typedef void (*xnn_init_qs8_addsub_minmax_params_fn)(
   union xnn_qs8_addsub_minmax_params params[XNN_MIN_ELEMENTS(1)],
   int8_t a_zero_point,
@@ -3362,6 +3378,12 @@
 typedef void (*xnn_init_f32_rnd_params_fn)(
   union xnn_f32_rnd_params params[XNN_MIN_ELEMENTS(1)]);
 
+typedef void (*xnn_init_f32_scaleminmax_params_fn)(
+  union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)],
+  float scale,
+  float output_min,
+  float output_max);
+
 typedef void (*xnn_init_f32_sigmoid_params_fn)(
   union xnn_f32_sigmoid_params params[XNN_MIN_ELEMENTS(1)]);
 
diff --git a/test/avgpool-microkernel-tester.h b/test/avgpool-microkernel-tester.h
index 19b6b85..2cbad2e 100644
--- a/test/avgpool-microkernel-tester.h
+++ b/test/avgpool-microkernel-tester.h
@@ -29,11 +29,6 @@
 
 class AvgPoolMicrokernelTester {
  public:
-  enum class Variant {
-    Native,
-    Scalar,
-  };
-
   inline AvgPoolMicrokernelTester& output_pixels(size_t output_pixels) {
     assert(output_pixels != 0);
     this->output_pixels_ = output_pixels;
@@ -210,7 +205,7 @@
     return this->iterations_;
   }
 
-  void Test(xnn_qu8_avgpool_minmax_unipass_ukernel_function avgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_qu8_avgpool_minmax_unipass_ukernel_function avgpool_minmax, xnn_init_qu8_avgpool_minmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto u8rng = std::bind(std::uniform_int_distribution<uint32_t>(0, std::numeric_limits<uint8_t>::max()), rng);
@@ -241,26 +236,16 @@
       }
 
       // Prepare parameters.
-      xnn_qu8_avgpool_minmax_params quantization_params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_qu8_avgpool_minmax_params(
-            &quantization_params,
-            -int32_t(input_zero_point()) * int32_t(pooling_elements()),
-            input_scale() / (output_scale() * float(pooling_elements())),
-            output_zero_point(), qmin(), qmax());
-          break;
-        case Variant::Scalar:
-          xnn_init_qu8_avgpool_minmax_scalar_params(
-            &quantization_params,
-            -int32_t(input_zero_point()) * int32_t(pooling_elements()),
-            input_scale() / (output_scale() * float(pooling_elements())),
-            output_zero_point(), qmin(), qmax());
-          break;
-      }
-      xnn_qu8_avgpool_minmax_params scalar_quantization_params;
+      xnn_qu8_avgpool_minmax_params params;
+      init_params(
+        &params,
+        -int32_t(input_zero_point()) * int32_t(pooling_elements()),
+        input_scale() / (output_scale() * float(pooling_elements())),
+        output_zero_point(), qmin(), qmax());
+
+      xnn_qu8_avgpool_minmax_params scalar_params;
       xnn_init_qu8_avgpool_minmax_scalar_params(
-        &scalar_quantization_params,
+        &scalar_params,
         -int32_t(input_zero_point()) * int32_t(pooling_elements()),
         input_scale() / (output_scale() * float(pooling_elements())),
         output_zero_point(), qmin(), qmax());
@@ -268,7 +253,7 @@
       // Compute reference results.
       for (size_t x = 0; x < output_pixels(); x++) {
         for (size_t c = 0; c < channels(); c++) {
-          int32_t acc = scalar_quantization_params.scalar.bias;
+          int32_t acc = scalar_params.scalar.bias;
           for (size_t p = 0; p < pooling_elements(); p++) {
             const uint8_t* row = indirect_input[x * step() + p];
             if (row != zero.data()) {
@@ -276,7 +261,7 @@
             }
           }
           accumulator[x * channels() + c] = acc;
-          output_ref[x * channels() + c] = xnn_qu8_quantize_avgpool(acc, scalar_quantization_params);
+          output_ref[x * channels() + c] = xnn_qu8_quantize_avgpool(acc, scalar_params);
           const float scaled_acc =
             float(acc) * input_scale() / (output_scale() * float(pooling_elements())) + float(output_zero_point());
           output_real[x * channels() + c] = std::min(std::max(scaled_acc, float(qmin())), float(qmax()));
@@ -289,7 +274,7 @@
         output.data(),
         step() * sizeof(void*),
         (output_stride() - channels()) * sizeof(uint8_t),
-        &quantization_params);
+        &params);
 
       // Verify results.
       for (size_t x = 0; x < output_pixels(); x++) {
@@ -315,7 +300,7 @@
     }
   }
 
-  void Test(xnn_qu8_avgpool_minmax_multipass_ukernel_function avgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_qu8_avgpool_minmax_multipass_ukernel_function avgpool_minmax, xnn_init_qu8_avgpool_minmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto u8rng = std::bind(std::uniform_int_distribution<uint32_t>(0, std::numeric_limits<uint8_t>::max()), rng);
@@ -347,34 +332,24 @@
       }
 
       // Prepare parameters.
-      xnn_qu8_avgpool_minmax_params quantization_params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_qu8_avgpool_minmax_params(
-            &quantization_params,
-            -int32_t(input_zero_point()) * int32_t(pooling_elements()),
-            input_scale() / (output_scale() * float(pooling_elements())),
-            output_zero_point(), qmin(), qmax());
-          break;
-        case Variant::Scalar:
-          xnn_init_qu8_avgpool_minmax_scalar_params(
-            &quantization_params,
-            -int32_t(input_zero_point()) * int32_t(pooling_elements()),
-            input_scale() / (output_scale() * float(pooling_elements())),
-            output_zero_point(), qmin(), qmax());
-          break;
-      }
-      xnn_qu8_avgpool_minmax_params scalar_quantization_params;
-        xnn_init_qu8_avgpool_minmax_scalar_params(
-          &scalar_quantization_params,
-          -int32_t(input_zero_point()) * int32_t(pooling_elements()),
-          input_scale() / (output_scale() * float(pooling_elements())),
-          output_zero_point(), qmin(), qmax());
+      xnn_qu8_avgpool_minmax_params params;
+      init_params(
+        &params,
+        -int32_t(input_zero_point()) * int32_t(pooling_elements()),
+        input_scale() / (output_scale() * float(pooling_elements())),
+        output_zero_point(), qmin(), qmax());
+
+      xnn_qu8_avgpool_minmax_params scalar_params;
+      xnn_init_qu8_avgpool_minmax_scalar_params(
+        &scalar_params,
+        -int32_t(input_zero_point()) * int32_t(pooling_elements()),
+        input_scale() / (output_scale() * float(pooling_elements())),
+        output_zero_point(), qmin(), qmax());
 
       // Compute reference results.
       for (size_t x = 0; x < output_pixels(); x++) {
         for (size_t c = 0; c < channels(); c++) {
-          int32_t acc = scalar_quantization_params.scalar.bias;
+          int32_t acc = scalar_params.scalar.bias;
           for (size_t p = 0; p < pooling_elements(); p++) {
             const uint8_t* row = indirect_input[x * step() + p];
             if (row != zero.data()) {
@@ -382,7 +357,7 @@
             }
           }
           accumulator[x * channels() + c] = acc;
-          output_ref[x * channels() + c] = xnn_qu8_quantize_avgpool(acc, scalar_quantization_params);
+          output_ref[x * channels() + c] = xnn_qu8_quantize_avgpool(acc, scalar_params);
           const float scaled_acc =
             float(acc) * input_scale() / (output_scale() * float(pooling_elements())) + float(output_zero_point());
           output_real[x * channels() + c] = std::min(std::max(scaled_acc, float(qmin())), float(qmax()));
@@ -395,7 +370,7 @@
         buffer.data(), output.data(),
         (step() - (packed_pooling_elements() - incremental_pooling_tile())) * sizeof(void*),
         (output_stride() - channels()) * sizeof(uint8_t),
-        &quantization_params);
+        &params);
 
       // Verify results.
       for (size_t x = 0; x < output_pixels(); x++) {
@@ -421,7 +396,7 @@
     }
   }
 
-  void Test(xnn_f32_avgpool_minmax_unipass_ukernel_function avgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_f32_avgpool_minmax_unipass_ukernel_function avgpool_minmax, xnn_init_f32_scaleminmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto f32rng = std::bind(std::uniform_real_distribution<float>(), rng);
@@ -475,16 +450,7 @@
 
       // Prepare parameters.
       xnn_f32_scaleminmax_params params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_f32_scaleminmax_params(
-            &params, 1.0f / float(pooling_elements()), output_min, output_max);
-          break;
-        case Variant::Scalar:
-          xnn_init_scalar_f32_scaleminmax_params(
-            &params, 1.0f / float(pooling_elements()), output_min, output_max);
-          break;
-      }
+      init_params(&params, 1.0f / float(pooling_elements()), output_min, output_max);
 
       // Call optimized micro-kernel.
       avgpool_minmax(output_pixels(), pooling_elements(), channels(),
@@ -517,7 +483,7 @@
     }
   }
 
-  void Test(xnn_f32_avgpool_minmax_multipass_ukernel_function avgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_f32_avgpool_minmax_multipass_ukernel_function avgpool_minmax, xnn_init_f32_scaleminmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto f32rng = std::bind(std::uniform_real_distribution<float>(), rng);
@@ -572,16 +538,7 @@
 
       // Prepare parameters.
       xnn_f32_scaleminmax_params params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_f32_scaleminmax_params(
-            &params, 1.0f / float(pooling_elements()), output_min, output_max);
-          break;
-        case Variant::Scalar:
-          xnn_init_scalar_f32_scaleminmax_params(
-            &params, 1.0f / float(pooling_elements()), output_min, output_max);
-          break;
-      }
+      init_params(&params, 1.0f / float(pooling_elements()), output_min, output_max);
 
       // Call optimized micro-kernel.
       avgpool_minmax(output_pixels(), pooling_elements(), channels(),
@@ -614,7 +571,7 @@
     }
   }
 
-  void Test(xnn_f32_pavgpool_minmax_unipass_ukernel_function pavgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_f32_pavgpool_minmax_unipass_ukernel_function pavgpool_minmax, xnn_init_f32_minmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto f32irng = std::bind(std::uniform_real_distribution<float>(), rng);
@@ -671,14 +628,7 @@
 
       // Prepare parameters.
       xnn_f32_minmax_params params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_f32_minmax_params(&params, output_min, output_max);
-          break;
-        case Variant::Scalar:
-          xnn_init_f32_minmax_scalar_params(&params, output_min, output_max);
-          break;
-      }
+      init_params(&params, output_min, output_max);
 
       // Call optimized micro-kernel.
       pavgpool_minmax(output_pixels(), pooling_elements(), channels(),
@@ -711,7 +661,7 @@
     }
   }
 
-  void Test(xnn_f32_pavgpool_minmax_multipass_ukernel_function pavgpool_minmax, Variant variant = Variant::Native) const {
+  void Test(xnn_f32_pavgpool_minmax_multipass_ukernel_function pavgpool_minmax, xnn_init_f32_minmax_params_fn init_params) const {
     std::random_device random_device;
     auto rng = std::mt19937(random_device());
     auto f32irng = std::bind(std::uniform_real_distribution<float>(), rng);
@@ -769,14 +719,7 @@
 
       // Prepare parameters.
       xnn_f32_minmax_params params;
-      switch (variant) {
-        case Variant::Native:
-          xnn_init_f32_minmax_params(&params, output_min, output_max);
-          break;
-        case Variant::Scalar:
-          xnn_init_f32_minmax_scalar_params(&params, output_min, output_max);
-          break;
-      }
+      init_params(&params, output_min, output_max);
 
       // Call optimized micro-kernel.
       pavgpool_minmax(output_pixels(), pooling_elements(), channels(),
diff --git a/test/f32-avgpool-minmax.cc b/test/f32-avgpool-minmax.cc
index 587d3eb..4248634 100644
--- a/test/f32-avgpool-minmax.cc
+++ b/test/f32-avgpool-minmax.cc
@@ -28,7 +28,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -38,7 +38,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -50,7 +50,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -61,7 +61,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -71,7 +71,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_subtile) {
@@ -81,7 +81,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -93,7 +93,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -107,7 +107,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -119,7 +119,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -131,7 +131,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -145,7 +145,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -158,7 +158,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -170,7 +170,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -182,7 +182,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -196,7 +196,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -212,7 +212,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -225,7 +225,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -237,7 +237,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -251,7 +251,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -264,7 +264,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -276,7 +276,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -288,7 +288,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -302,7 +302,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -318,7 +318,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -331,7 +331,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -343,7 +343,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -357,7 +357,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -370,7 +370,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -382,7 +382,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -394,7 +394,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -408,7 +408,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -424,7 +424,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -437,7 +437,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -449,7 +449,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -463,7 +463,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -476,7 +476,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -488,7 +488,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -500,7 +500,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -514,7 +514,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -530,7 +530,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -545,7 +545,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -559,7 +559,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -572,7 +572,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -586,7 +586,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -602,7 +602,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -617,7 +617,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -631,7 +631,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -644,7 +644,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -658,7 +658,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -674,7 +674,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -689,7 +689,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -703,7 +703,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -718,7 +718,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -735,7 +735,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -754,7 +754,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -772,7 +772,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -789,7 +789,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -806,7 +806,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -825,7 +825,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -841,7 +841,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -851,7 +851,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -863,7 +863,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -874,7 +874,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -884,7 +884,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_subtile) {
@@ -894,7 +894,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -906,7 +906,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -920,7 +920,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -932,7 +932,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -944,7 +944,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -958,7 +958,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -971,7 +971,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -983,7 +983,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -995,7 +995,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1009,7 +1009,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1025,7 +1025,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1038,7 +1038,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1050,7 +1050,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1064,7 +1064,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1077,7 +1077,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1089,7 +1089,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1101,7 +1101,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1115,7 +1115,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1131,7 +1131,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1144,7 +1144,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1156,7 +1156,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1170,7 +1170,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1183,7 +1183,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1195,7 +1195,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1207,7 +1207,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1221,7 +1221,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1237,7 +1237,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1250,7 +1250,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1262,7 +1262,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1276,7 +1276,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1289,7 +1289,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1301,7 +1301,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1313,7 +1313,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1327,7 +1327,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1343,7 +1343,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1358,7 +1358,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1372,7 +1372,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1385,7 +1385,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1399,7 +1399,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1415,7 +1415,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1430,7 +1430,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1444,7 +1444,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1457,7 +1457,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1471,7 +1471,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1487,7 +1487,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1502,7 +1502,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1516,7 +1516,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1531,7 +1531,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1548,7 +1548,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1567,7 +1567,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -1585,7 +1585,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1602,7 +1602,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1619,7 +1619,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1638,7 +1638,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -1653,7 +1653,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -1662,7 +1662,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -1673,7 +1673,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1683,7 +1683,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -1692,7 +1692,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_subtile) {
@@ -1701,7 +1701,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1712,7 +1712,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1725,7 +1725,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1736,7 +1736,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1747,7 +1747,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1760,7 +1760,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1772,7 +1772,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1783,7 +1783,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1794,7 +1794,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1807,7 +1807,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1822,7 +1822,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1834,7 +1834,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1845,7 +1845,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1858,7 +1858,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1870,7 +1870,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1881,7 +1881,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1892,7 +1892,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1905,7 +1905,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1920,7 +1920,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -1932,7 +1932,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1943,7 +1943,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1956,7 +1956,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -1968,7 +1968,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1979,7 +1979,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -1990,7 +1990,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2003,7 +2003,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2018,7 +2018,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2030,7 +2030,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2041,7 +2041,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2054,7 +2054,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2066,7 +2066,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2077,7 +2077,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2088,7 +2088,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2101,7 +2101,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2116,7 +2116,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2130,7 +2130,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2143,7 +2143,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2155,7 +2155,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2168,7 +2168,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2183,7 +2183,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2197,7 +2197,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2210,7 +2210,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2222,7 +2222,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2235,7 +2235,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2250,7 +2250,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2264,7 +2264,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2277,7 +2277,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2291,7 +2291,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2307,7 +2307,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2325,7 +2325,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -2342,7 +2342,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2358,7 +2358,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2374,7 +2374,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2392,7 +2392,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -2407,7 +2407,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -2416,7 +2416,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -2427,7 +2427,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2437,7 +2437,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -2446,7 +2446,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_subtile) {
@@ -2455,7 +2455,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2466,7 +2466,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2479,7 +2479,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2490,7 +2490,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2501,7 +2501,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2514,7 +2514,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2526,7 +2526,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2537,7 +2537,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2548,7 +2548,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2561,7 +2561,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2576,7 +2576,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2588,7 +2588,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2599,7 +2599,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2612,7 +2612,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2624,7 +2624,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2635,7 +2635,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2646,7 +2646,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2659,7 +2659,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2674,7 +2674,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2686,7 +2686,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2697,7 +2697,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2710,7 +2710,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2722,7 +2722,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2733,7 +2733,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2744,7 +2744,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2757,7 +2757,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2772,7 +2772,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2784,7 +2784,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2795,7 +2795,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2808,7 +2808,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2820,7 +2820,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2831,7 +2831,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -2842,7 +2842,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2855,7 +2855,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2870,7 +2870,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2884,7 +2884,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2897,7 +2897,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2909,7 +2909,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2922,7 +2922,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2937,7 +2937,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -2951,7 +2951,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2964,7 +2964,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2976,7 +2976,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -2989,7 +2989,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -3004,7 +3004,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3018,7 +3018,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -3031,7 +3031,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -3045,7 +3045,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3061,7 +3061,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3079,7 +3079,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -3096,7 +3096,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3112,7 +3112,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3128,7 +3128,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -3146,7 +3146,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -3161,7 +3161,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
@@ -3170,7 +3170,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_zero) {
@@ -3181,7 +3181,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3191,7 +3191,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_qmax) {
@@ -3200,7 +3200,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_subtile) {
@@ -3209,7 +3209,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(1)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3220,7 +3220,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3233,7 +3233,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3244,7 +3244,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3255,7 +3255,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3268,7 +3268,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3280,7 +3280,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3291,7 +3291,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3302,7 +3302,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3315,7 +3315,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3330,7 +3330,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3342,7 +3342,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(1)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3353,7 +3353,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3366,7 +3366,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3378,7 +3378,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3389,7 +3389,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -3400,7 +3400,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3413,7 +3413,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3428,7 +3428,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3442,7 +3442,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3455,7 +3455,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3469,7 +3469,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3485,7 +3485,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3503,7 +3503,7 @@
               .channels(channels)
               .input_offset(7)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
           }
         }
       }
@@ -3520,7 +3520,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3536,7 +3536,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3552,7 +3552,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3570,7 +3570,7 @@
               .step(step)
               .channels(channels)
               .output_stride(7)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
           }
         }
       }
@@ -3584,7 +3584,7 @@
     .pooling_elements(17)
     .pooling_tile(9, 8)
     .channels(1)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
@@ -3593,7 +3593,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_zero) {
@@ -3604,7 +3604,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3614,7 +3614,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmin(128)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmax) {
@@ -3623,7 +3623,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmax(128)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
@@ -3632,7 +3632,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3643,7 +3643,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3656,7 +3656,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3667,7 +3667,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(channels)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3678,7 +3678,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3691,7 +3691,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3703,7 +3703,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3714,7 +3714,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3725,7 +3725,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3738,7 +3738,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3753,7 +3753,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3765,7 +3765,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3776,7 +3776,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3789,7 +3789,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3801,7 +3801,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3812,7 +3812,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -3823,7 +3823,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3836,7 +3836,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3851,7 +3851,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3865,7 +3865,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3878,7 +3878,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -3892,7 +3892,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3908,7 +3908,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3926,7 +3926,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -3943,7 +3943,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3959,7 +3959,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3975,7 +3975,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -3993,7 +3993,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -4007,7 +4007,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -4017,7 +4017,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -4029,7 +4029,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4040,7 +4040,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -4050,7 +4050,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_subtile) {
@@ -4060,7 +4060,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4072,7 +4072,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4086,7 +4086,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4098,7 +4098,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4110,7 +4110,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4124,7 +4124,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4137,7 +4137,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4149,7 +4149,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4161,7 +4161,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4175,7 +4175,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4191,7 +4191,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4204,7 +4204,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4216,7 +4216,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4230,7 +4230,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4243,7 +4243,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4255,7 +4255,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4267,7 +4267,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4281,7 +4281,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4297,7 +4297,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4310,7 +4310,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4322,7 +4322,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4336,7 +4336,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4349,7 +4349,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4361,7 +4361,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4373,7 +4373,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4387,7 +4387,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4403,7 +4403,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4419,7 +4419,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4436,7 +4436,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4455,7 +4455,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -4473,7 +4473,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4490,7 +4490,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4507,7 +4507,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4526,7 +4526,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -4542,7 +4542,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -4552,7 +4552,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -4564,7 +4564,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4575,7 +4575,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -4585,7 +4585,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_subtile) {
@@ -4595,7 +4595,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4607,7 +4607,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4621,7 +4621,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4633,7 +4633,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4645,7 +4645,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4659,7 +4659,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4672,7 +4672,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4684,7 +4684,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4696,7 +4696,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4710,7 +4710,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4726,7 +4726,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4739,7 +4739,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4751,7 +4751,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4765,7 +4765,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4778,7 +4778,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4790,7 +4790,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4802,7 +4802,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4816,7 +4816,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4832,7 +4832,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4845,7 +4845,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4857,7 +4857,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4871,7 +4871,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4884,7 +4884,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4896,7 +4896,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -4908,7 +4908,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4922,7 +4922,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -4938,7 +4938,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4954,7 +4954,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4971,7 +4971,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -4990,7 +4990,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -5008,7 +5008,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5025,7 +5025,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5042,7 +5042,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5061,7 +5061,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -5076,7 +5076,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -5085,7 +5085,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -5096,7 +5096,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5106,7 +5106,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -5115,7 +5115,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_subtile) {
@@ -5124,7 +5124,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5135,7 +5135,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5148,7 +5148,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5159,7 +5159,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5170,7 +5170,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5183,7 +5183,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5195,7 +5195,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5206,7 +5206,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5217,7 +5217,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5230,7 +5230,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5245,7 +5245,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5257,7 +5257,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5268,7 +5268,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5281,7 +5281,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5293,7 +5293,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5304,7 +5304,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5315,7 +5315,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5328,7 +5328,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5343,7 +5343,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5355,7 +5355,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5366,7 +5366,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5379,7 +5379,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5391,7 +5391,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5402,7 +5402,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5413,7 +5413,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5426,7 +5426,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5441,7 +5441,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5456,7 +5456,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5472,7 +5472,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5490,7 +5490,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -5507,7 +5507,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5523,7 +5523,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5539,7 +5539,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5557,7 +5557,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -5572,7 +5572,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -5581,7 +5581,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -5592,7 +5592,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5602,7 +5602,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -5611,7 +5611,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_subtile) {
@@ -5620,7 +5620,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5631,7 +5631,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5644,7 +5644,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5655,7 +5655,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5666,7 +5666,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5679,7 +5679,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5691,7 +5691,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5702,7 +5702,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5713,7 +5713,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5726,7 +5726,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5741,7 +5741,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5753,7 +5753,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5764,7 +5764,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5777,7 +5777,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5789,7 +5789,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5800,7 +5800,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5811,7 +5811,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5824,7 +5824,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5839,7 +5839,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5851,7 +5851,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5862,7 +5862,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5875,7 +5875,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5887,7 +5887,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5898,7 +5898,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
     }
   }
 
@@ -5909,7 +5909,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5922,7 +5922,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
       }
     }
   }
@@ -5937,7 +5937,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5952,7 +5952,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5968,7 +5968,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -5986,7 +5986,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -6003,7 +6003,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -6019,7 +6019,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -6035,7 +6035,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
         }
       }
     }
@@ -6053,7 +6053,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_scaleminmax_params);
           }
         }
       }
@@ -6068,7 +6068,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(1)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
@@ -6077,7 +6077,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_zero) {
@@ -6088,7 +6088,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6098,7 +6098,7 @@
       .pooling_tile(9)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_qmax) {
@@ -6107,7 +6107,7 @@
       .pooling_tile(9)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 
   TEST(F32_AVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_subtile) {
@@ -6116,7 +6116,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(1)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6127,7 +6127,7 @@
         .pooling_tile(9)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6140,7 +6140,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6151,7 +6151,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6162,7 +6162,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6175,7 +6175,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6187,7 +6187,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6198,7 +6198,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 
@@ -6209,7 +6209,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6222,7 +6222,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6237,7 +6237,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6252,7 +6252,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6268,7 +6268,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6286,7 +6286,7 @@
               .channels(channels)
               .input_offset(7)
               .zero_index(zero_index)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
           }
         }
       }
@@ -6303,7 +6303,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6319,7 +6319,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6335,7 +6335,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6353,7 +6353,7 @@
               .step(step)
               .channels(channels)
               .output_stride(7)
-              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_scaleminmax_scalar_params);
           }
         }
       }
@@ -6367,7 +6367,7 @@
     .pooling_elements(9)
     .pooling_tile(9)
     .channels(1)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
@@ -6376,7 +6376,7 @@
     .pooling_tile(9)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_zero) {
@@ -6387,7 +6387,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6397,7 +6397,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmin(128)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmax) {
@@ -6406,7 +6406,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmax(128)
-    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
 }
 
 TEST(F32_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_subtile) {
@@ -6415,7 +6415,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9)
       .channels(1)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6426,7 +6426,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6439,7 +6439,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -6450,7 +6450,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(channels)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6461,7 +6461,7 @@
       .pooling_tile(9)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6474,7 +6474,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -6486,7 +6486,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6497,7 +6497,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
   }
 }
 
@@ -6508,7 +6508,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -6521,7 +6521,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
     }
   }
 }
@@ -6536,7 +6536,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6551,7 +6551,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 0)
           .channels(channels)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6567,7 +6567,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6585,7 +6585,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
@@ -6602,7 +6602,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6618,7 +6618,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6634,7 +6634,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
       }
     }
   }
@@ -6652,7 +6652,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_scaleminmax_scalar_params);
         }
       }
     }
diff --git a/test/f32-avgpool-minmax.yaml b/test/f32-avgpool-minmax.yaml
index 1c3870f..f785f10 100644
--- a/test/f32-avgpool-minmax.yaml
+++ b/test/f32-avgpool-minmax.yaml
@@ -3,14 +3,26 @@
 # This source code is licensed under the BSD-style license found in the
 # LICENSE file in the root directory of this source tree.
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__neon_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__sse_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__wasm_c1
+  init: xnn_init_f32_scaleminmax_scalar_params
 - name: xnn_f32_avgpool_minmax_ukernel_9p8x__scalar_c1
+  init: xnn_init_f32_scaleminmax_scalar_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__neon_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__sse_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_arm_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__wasmsimd_x86_c4
+  init: xnn_init_f32_scaleminmax_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__wasm_c1
+  init: xnn_init_f32_scaleminmax_scalar_params
 - name: xnn_f32_avgpool_minmax_ukernel_9x__scalar_c1
+  init: xnn_init_f32_scaleminmax_scalar_params
diff --git a/test/f32-pavgpool-minmax.cc b/test/f32-pavgpool-minmax.cc
index 88fef74..d80b6d0 100644
--- a/test/f32-pavgpool-minmax.cc
+++ b/test/f32-pavgpool-minmax.cc
@@ -28,7 +28,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -38,7 +38,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -50,7 +50,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -61,7 +61,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -71,7 +71,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__NEON_C4, channels_eq_4_twopass_subtile) {
@@ -81,7 +81,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -93,7 +93,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -107,7 +107,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -119,7 +119,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -131,7 +131,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -145,7 +145,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -158,7 +158,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -170,7 +170,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -182,7 +182,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -196,7 +196,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -212,7 +212,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -225,7 +225,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -237,7 +237,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -251,7 +251,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -264,7 +264,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -276,7 +276,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -288,7 +288,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -302,7 +302,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -318,7 +318,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -331,7 +331,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -343,7 +343,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -357,7 +357,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -370,7 +370,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -382,7 +382,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -394,7 +394,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -408,7 +408,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -424,7 +424,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -437,7 +437,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -449,7 +449,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -463,7 +463,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -476,7 +476,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -488,7 +488,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -500,7 +500,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -514,7 +514,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -530,7 +530,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -545,7 +545,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -559,7 +559,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -572,7 +572,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -586,7 +586,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -602,7 +602,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -617,7 +617,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -631,7 +631,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -644,7 +644,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -658,7 +658,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -674,7 +674,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -689,7 +689,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -703,7 +703,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -718,7 +718,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -735,7 +735,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -754,7 +754,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -772,7 +772,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -789,7 +789,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -806,7 +806,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -825,7 +825,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -841,7 +841,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -851,7 +851,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -863,7 +863,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -874,7 +874,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -884,7 +884,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__SSE_C4, channels_eq_4_twopass_subtile) {
@@ -894,7 +894,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -906,7 +906,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -920,7 +920,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -932,7 +932,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -944,7 +944,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -958,7 +958,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -971,7 +971,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -983,7 +983,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -995,7 +995,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1009,7 +1009,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1025,7 +1025,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1038,7 +1038,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1050,7 +1050,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1064,7 +1064,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1077,7 +1077,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1089,7 +1089,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1101,7 +1101,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1115,7 +1115,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1131,7 +1131,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1144,7 +1144,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1156,7 +1156,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1170,7 +1170,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1183,7 +1183,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1195,7 +1195,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1207,7 +1207,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1221,7 +1221,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1237,7 +1237,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1250,7 +1250,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1262,7 +1262,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1276,7 +1276,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1289,7 +1289,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1301,7 +1301,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1313,7 +1313,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1327,7 +1327,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1343,7 +1343,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1358,7 +1358,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1372,7 +1372,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1385,7 +1385,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1399,7 +1399,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1415,7 +1415,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1430,7 +1430,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1444,7 +1444,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1457,7 +1457,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1471,7 +1471,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1487,7 +1487,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1502,7 +1502,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1516,7 +1516,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1531,7 +1531,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1548,7 +1548,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1567,7 +1567,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -1585,7 +1585,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1602,7 +1602,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1619,7 +1619,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1638,7 +1638,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -1653,7 +1653,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -1662,7 +1662,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -1673,7 +1673,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1683,7 +1683,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -1692,7 +1692,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_ARM_C4, channels_eq_4_twopass_subtile) {
@@ -1701,7 +1701,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1712,7 +1712,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1725,7 +1725,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1736,7 +1736,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1747,7 +1747,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1760,7 +1760,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1772,7 +1772,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1783,7 +1783,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1794,7 +1794,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1807,7 +1807,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1822,7 +1822,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1834,7 +1834,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1845,7 +1845,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1858,7 +1858,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1870,7 +1870,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1881,7 +1881,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1892,7 +1892,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1905,7 +1905,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1920,7 +1920,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -1932,7 +1932,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1943,7 +1943,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1956,7 +1956,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -1968,7 +1968,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1979,7 +1979,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -1990,7 +1990,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2003,7 +2003,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2018,7 +2018,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2030,7 +2030,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2041,7 +2041,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2054,7 +2054,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2066,7 +2066,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2077,7 +2077,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2088,7 +2088,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2101,7 +2101,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2116,7 +2116,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2130,7 +2130,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2143,7 +2143,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2155,7 +2155,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2168,7 +2168,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2183,7 +2183,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2197,7 +2197,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2210,7 +2210,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2222,7 +2222,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2235,7 +2235,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2250,7 +2250,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2264,7 +2264,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2277,7 +2277,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2291,7 +2291,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2307,7 +2307,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2325,7 +2325,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -2342,7 +2342,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2358,7 +2358,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2374,7 +2374,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2392,7 +2392,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -2407,7 +2407,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_input_offset) {
@@ -2416,7 +2416,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_zero) {
@@ -2427,7 +2427,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2437,7 +2437,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_fulltile_with_qmax) {
@@ -2446,7 +2446,7 @@
       .pooling_tile(9, 8)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASMSIMD_X86_C4, channels_eq_4_twopass_subtile) {
@@ -2455,7 +2455,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2466,7 +2466,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2479,7 +2479,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2490,7 +2490,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2501,7 +2501,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(23)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2514,7 +2514,7 @@
           .channels(channels)
           .input_offset(23)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2526,7 +2526,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2537,7 +2537,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2548,7 +2548,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2561,7 +2561,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2576,7 +2576,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2588,7 +2588,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2599,7 +2599,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2612,7 +2612,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2624,7 +2624,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2635,7 +2635,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2646,7 +2646,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2659,7 +2659,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2674,7 +2674,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2686,7 +2686,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2697,7 +2697,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2710,7 +2710,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2722,7 +2722,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2733,7 +2733,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2744,7 +2744,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2757,7 +2757,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2772,7 +2772,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2784,7 +2784,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2795,7 +2795,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2808,7 +2808,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2820,7 +2820,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2831,7 +2831,7 @@
         .pooling_tile(9, 8)
         .channels(4)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -2842,7 +2842,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2855,7 +2855,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2870,7 +2870,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2884,7 +2884,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2897,7 +2897,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2909,7 +2909,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2922,7 +2922,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(4)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2937,7 +2937,7 @@
             .channels(channels)
             .input_offset(4)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -2951,7 +2951,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2964,7 +2964,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2976,7 +2976,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -2989,7 +2989,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -3004,7 +3004,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3018,7 +3018,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -3031,7 +3031,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -3045,7 +3045,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3061,7 +3061,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3079,7 +3079,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -3096,7 +3096,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3112,7 +3112,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3128,7 +3128,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -3146,7 +3146,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -3161,7 +3161,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
@@ -3170,7 +3170,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_zero) {
@@ -3181,7 +3181,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3191,7 +3191,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_fulltile_with_qmax) {
@@ -3200,7 +3200,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9P8X__WASM_C1, channels_eq_1_twopass_subtile) {
@@ -3209,7 +3209,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(1)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3220,7 +3220,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3233,7 +3233,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3244,7 +3244,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3255,7 +3255,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3268,7 +3268,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3280,7 +3280,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3291,7 +3291,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3302,7 +3302,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3315,7 +3315,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3330,7 +3330,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3342,7 +3342,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(1)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3353,7 +3353,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3366,7 +3366,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3378,7 +3378,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3389,7 +3389,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -3400,7 +3400,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3413,7 +3413,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3428,7 +3428,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3442,7 +3442,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3455,7 +3455,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3469,7 +3469,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3485,7 +3485,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3503,7 +3503,7 @@
               .channels(channels)
               .input_offset(7)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
           }
         }
       }
@@ -3520,7 +3520,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3536,7 +3536,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3552,7 +3552,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3570,7 +3570,7 @@
               .step(step)
               .channels(channels)
               .output_stride(7)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1, xnn_init_f32_minmax_scalar_params);
           }
         }
       }
@@ -3584,7 +3584,7 @@
     .pooling_elements(17)
     .pooling_tile(9, 8)
     .channels(1)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
@@ -3593,7 +3593,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_zero) {
@@ -3604,7 +3604,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3614,7 +3614,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmin(128)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmax) {
@@ -3623,7 +3623,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmax(128)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
@@ -3632,7 +3632,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3643,7 +3643,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3656,7 +3656,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3667,7 +3667,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(channels)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3678,7 +3678,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3691,7 +3691,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3703,7 +3703,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3714,7 +3714,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3725,7 +3725,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3738,7 +3738,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3753,7 +3753,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3765,7 +3765,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3776,7 +3776,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3789,7 +3789,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3801,7 +3801,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3812,7 +3812,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -3823,7 +3823,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3836,7 +3836,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3851,7 +3851,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3865,7 +3865,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3878,7 +3878,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -3892,7 +3892,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3908,7 +3908,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3926,7 +3926,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -3943,7 +3943,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3959,7 +3959,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3975,7 +3975,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -3993,7 +3993,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -4007,7 +4007,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -4017,7 +4017,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -4029,7 +4029,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4040,7 +4040,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -4050,7 +4050,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__NEON_C4, channels_eq_4_unipass_subtile) {
@@ -4060,7 +4060,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4072,7 +4072,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4086,7 +4086,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4098,7 +4098,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4110,7 +4110,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4124,7 +4124,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4137,7 +4137,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4149,7 +4149,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4161,7 +4161,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4175,7 +4175,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4191,7 +4191,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4204,7 +4204,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4216,7 +4216,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4230,7 +4230,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4243,7 +4243,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4255,7 +4255,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4267,7 +4267,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4281,7 +4281,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4297,7 +4297,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4310,7 +4310,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4322,7 +4322,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4336,7 +4336,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4349,7 +4349,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4361,7 +4361,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4373,7 +4373,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4387,7 +4387,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4403,7 +4403,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4419,7 +4419,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4436,7 +4436,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4455,7 +4455,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -4473,7 +4473,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4490,7 +4490,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4507,7 +4507,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4526,7 +4526,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -4542,7 +4542,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -4552,7 +4552,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -4564,7 +4564,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4575,7 +4575,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -4585,7 +4585,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__SSE_C4, channels_eq_4_unipass_subtile) {
@@ -4595,7 +4595,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4607,7 +4607,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4621,7 +4621,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4633,7 +4633,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4645,7 +4645,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4659,7 +4659,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4672,7 +4672,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4684,7 +4684,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4696,7 +4696,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4710,7 +4710,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4726,7 +4726,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4739,7 +4739,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4751,7 +4751,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4765,7 +4765,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4778,7 +4778,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4790,7 +4790,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4802,7 +4802,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4816,7 +4816,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4832,7 +4832,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4845,7 +4845,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4857,7 +4857,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4871,7 +4871,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4884,7 +4884,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4896,7 +4896,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -4908,7 +4908,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4922,7 +4922,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -4938,7 +4938,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4954,7 +4954,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4971,7 +4971,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -4990,7 +4990,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -5008,7 +5008,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5025,7 +5025,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5042,7 +5042,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5061,7 +5061,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -5076,7 +5076,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -5085,7 +5085,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -5096,7 +5096,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5106,7 +5106,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -5115,7 +5115,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_ARM_C4, channels_eq_4_unipass_subtile) {
@@ -5124,7 +5124,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5135,7 +5135,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5148,7 +5148,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5159,7 +5159,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5170,7 +5170,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5183,7 +5183,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5195,7 +5195,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5206,7 +5206,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5217,7 +5217,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5230,7 +5230,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5245,7 +5245,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5257,7 +5257,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5268,7 +5268,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5281,7 +5281,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5293,7 +5293,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5304,7 +5304,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5315,7 +5315,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5328,7 +5328,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5343,7 +5343,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5355,7 +5355,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5366,7 +5366,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5379,7 +5379,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5391,7 +5391,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5402,7 +5402,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5413,7 +5413,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5426,7 +5426,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5441,7 +5441,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5456,7 +5456,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5472,7 +5472,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5490,7 +5490,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -5507,7 +5507,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5523,7 +5523,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5539,7 +5539,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5557,7 +5557,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -5572,7 +5572,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(4)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_input_offset) {
@@ -5581,7 +5581,7 @@
       .pooling_tile(9)
       .channels(4)
       .input_offset(7)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_zero) {
@@ -5592,7 +5592,7 @@
         .channels(4)
         .input_offset(7)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5602,7 +5602,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_fulltile_with_qmax) {
@@ -5611,7 +5611,7 @@
       .pooling_tile(9)
       .channels(4)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASMSIMD_X86_C4, channels_eq_4_unipass_subtile) {
@@ -5620,7 +5620,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(4)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5631,7 +5631,7 @@
         .pooling_tile(9)
         .channels(4)
         .input_offset(7)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5644,7 +5644,7 @@
           .channels(4)
           .input_offset(7)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5655,7 +5655,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5666,7 +5666,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(37)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5679,7 +5679,7 @@
           .channels(channels)
           .input_offset(37)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5691,7 +5691,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5702,7 +5702,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5713,7 +5713,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5726,7 +5726,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(37)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5741,7 +5741,7 @@
             .channels(channels)
             .input_offset(37)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5753,7 +5753,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5764,7 +5764,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(5)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5777,7 +5777,7 @@
           .channels(channels)
           .input_offset(5)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5789,7 +5789,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5800,7 +5800,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5811,7 +5811,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5824,7 +5824,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(5)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5839,7 +5839,7 @@
             .channels(channels)
             .input_offset(5)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5851,7 +5851,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5862,7 +5862,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5875,7 +5875,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5887,7 +5887,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5898,7 +5898,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
     }
   }
 
@@ -5909,7 +5909,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5922,7 +5922,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
       }
     }
   }
@@ -5937,7 +5937,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5952,7 +5952,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5968,7 +5968,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -5986,7 +5986,7 @@
               .channels(channels)
               .input_offset(23)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -6003,7 +6003,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -6019,7 +6019,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -6035,7 +6035,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(23)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
         }
       }
     }
@@ -6053,7 +6053,7 @@
               .step(step)
               .channels(channels)
               .output_stride(23)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4, xnn_init_f32_minmax_params);
           }
         }
       }
@@ -6068,7 +6068,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(1)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
@@ -6077,7 +6077,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_zero) {
@@ -6088,7 +6088,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6098,7 +6098,7 @@
       .pooling_tile(9)
       .channels(1)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_fulltile_with_qmax) {
@@ -6107,7 +6107,7 @@
       .pooling_tile(9)
       .channels(1)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
   }
 
   TEST(F32_PAVGPOOL_MINMAX_9X__WASM_C1, channels_eq_1_unipass_subtile) {
@@ -6116,7 +6116,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(1)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6127,7 +6127,7 @@
         .pooling_tile(9)
         .channels(1)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6140,7 +6140,7 @@
           .channels(1)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6151,7 +6151,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6162,7 +6162,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6175,7 +6175,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6187,7 +6187,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6198,7 +6198,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 
@@ -6209,7 +6209,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6222,7 +6222,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(3)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6237,7 +6237,7 @@
             .channels(channels)
             .input_offset(3)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6252,7 +6252,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6268,7 +6268,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6286,7 +6286,7 @@
               .channels(channels)
               .input_offset(7)
               .zero_index(zero_index)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
           }
         }
       }
@@ -6303,7 +6303,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6319,7 +6319,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6335,7 +6335,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6353,7 +6353,7 @@
               .step(step)
               .channels(channels)
               .output_stride(7)
-              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+              .Test(xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1, xnn_init_f32_minmax_scalar_params);
           }
         }
       }
@@ -6367,7 +6367,7 @@
     .pooling_elements(9)
     .pooling_tile(9)
     .channels(1)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
@@ -6376,7 +6376,7 @@
     .pooling_tile(9)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_zero) {
@@ -6387,7 +6387,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6397,7 +6397,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmin(128)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmax) {
@@ -6406,7 +6406,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmax(128)
-    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
 }
 
 TEST(F32_PAVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_subtile) {
@@ -6415,7 +6415,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9)
       .channels(1)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6426,7 +6426,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6439,7 +6439,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -6450,7 +6450,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(channels)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6461,7 +6461,7 @@
       .pooling_tile(9)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6474,7 +6474,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -6486,7 +6486,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6497,7 +6497,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
   }
 }
 
@@ -6508,7 +6508,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -6521,7 +6521,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
     }
   }
 }
@@ -6536,7 +6536,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6551,7 +6551,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 0)
           .channels(channels)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6567,7 +6567,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6585,7 +6585,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
@@ -6602,7 +6602,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6618,7 +6618,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6634,7 +6634,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
       }
     }
   }
@@ -6652,7 +6652,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1, xnn_init_f32_minmax_scalar_params);
         }
       }
     }
diff --git a/test/f32-pavgpool-minmax.yaml b/test/f32-pavgpool-minmax.yaml
index d3a6941..9545bc9 100644
--- a/test/f32-pavgpool-minmax.yaml
+++ b/test/f32-pavgpool-minmax.yaml
@@ -3,14 +3,26 @@
 # This source code is licensed under the BSD-style license found in the
 # LICENSE file in the root directory of this source tree.
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__neon_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__sse_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_arm_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__wasmsimd_x86_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__wasm_c1
+  init: xnn_init_f32_minmax_scalar_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9p8x__scalar_c1
+  init: xnn_init_f32_minmax_scalar_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__neon_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__sse_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_arm_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__wasmsimd_x86_c4
+  init: xnn_init_f32_minmax_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__wasm_c1
+  init: xnn_init_f32_minmax_scalar_params
 - name: xnn_f32_pavgpool_minmax_ukernel_9x__scalar_c1
+  init: xnn_init_f32_minmax_scalar_params
diff --git a/test/gavgpool-microkernel-tester.h b/test/gavgpool-microkernel-tester.h
index de9bcda..3588d73 100644
--- a/test/gavgpool-microkernel-tester.h
+++ b/test/gavgpool-microkernel-tester.h
@@ -633,7 +633,7 @@
             &params, 1.0f / float(rows()), output_min, output_max);
           break;
         case Variant::Scalar:
-          xnn_init_scalar_f32_scaleminmax_params(
+          xnn_init_f32_scaleminmax_scalar_params(
             &params, 1.0f / float(rows()), output_min, output_max);
           break;
       }
@@ -695,7 +695,7 @@
             &params, 1.0f / float(rows()), output_min, output_max);
           break;
         case Variant::Scalar:
-          xnn_init_scalar_f32_scaleminmax_params(
+          xnn_init_f32_scaleminmax_scalar_params(
             &params, 1.0f / float(rows()), output_min, output_max);
           break;
       }
diff --git a/test/qu8-avgpool-minmax.cc b/test/qu8-avgpool-minmax.cc
index cefd4ad..5b3edb2 100644
--- a/test/qu8-avgpool-minmax.cc
+++ b/test/qu8-avgpool-minmax.cc
@@ -28,7 +28,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(8)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__NEON_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
@@ -38,7 +38,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .input_offset(11)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__NEON_C8, channels_eq_8_twopass_fulltile_with_zero) {
@@ -50,7 +50,7 @@
         .channels(8)
         .input_offset(11)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -62,7 +62,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -74,7 +74,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -86,7 +86,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -98,7 +98,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -109,7 +109,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__NEON_C8, channels_eq_8_twopass_fulltile_with_qmax) {
@@ -119,7 +119,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__NEON_C8, channels_eq_8_twopass_subtile) {
@@ -129,7 +129,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -141,7 +141,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -155,7 +155,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -167,7 +167,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -179,7 +179,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(41)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -193,7 +193,7 @@
           .channels(channels)
           .input_offset(41)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -207,7 +207,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -221,7 +221,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -235,7 +235,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -249,7 +249,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -262,7 +262,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -274,7 +274,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -286,7 +286,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -300,7 +300,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -316,7 +316,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -329,7 +329,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -341,7 +341,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -355,7 +355,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -369,7 +369,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -383,7 +383,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -397,7 +397,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -411,7 +411,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -424,7 +424,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -436,7 +436,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -448,7 +448,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -462,7 +462,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -478,7 +478,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -491,7 +491,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -503,7 +503,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(17)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -517,7 +517,7 @@
           .channels(channels)
           .input_offset(17)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -531,7 +531,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -545,7 +545,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -559,7 +559,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -573,7 +573,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -586,7 +586,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -598,7 +598,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -610,7 +610,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -624,7 +624,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -640,7 +640,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -653,7 +653,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -665,7 +665,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -679,7 +679,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -693,7 +693,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -707,7 +707,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -721,7 +721,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -735,7 +735,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -748,7 +748,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -760,7 +760,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -772,7 +772,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -786,7 +786,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -802,7 +802,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -818,7 +818,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -834,7 +834,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -850,7 +850,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -866,7 +866,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -881,7 +881,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -895,7 +895,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -908,7 +908,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -922,7 +922,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(8)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -938,7 +938,7 @@
             .channels(channels)
             .input_offset(8)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -954,7 +954,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -970,7 +970,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -986,7 +986,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1002,7 +1002,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1017,7 +1017,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1031,7 +1031,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1044,7 +1044,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1058,7 +1058,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1074,7 +1074,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1090,7 +1090,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1106,7 +1106,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1122,7 +1122,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1138,7 +1138,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1153,7 +1153,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1167,7 +1167,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1182,7 +1182,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1199,7 +1199,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1218,7 +1218,7 @@
               .channels(channels)
               .input_offset(43)
               .zero_index(zero_index)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1237,7 +1237,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .input_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1256,7 +1256,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .input_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1275,7 +1275,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .output_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1294,7 +1294,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .output_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1312,7 +1312,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1329,7 +1329,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1346,7 +1346,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1365,7 +1365,7 @@
               .step(step)
               .channels(channels)
               .output_stride(43)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -1381,7 +1381,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(8)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__SSE2_C8, channels_eq_8_twopass_fulltile_with_input_offset) {
@@ -1391,7 +1391,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .input_offset(11)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__SSE2_C8, channels_eq_8_twopass_fulltile_with_zero) {
@@ -1403,7 +1403,7 @@
         .channels(8)
         .input_offset(11)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1415,7 +1415,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1427,7 +1427,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1439,7 +1439,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1451,7 +1451,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1462,7 +1462,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__SSE2_C8, channels_eq_8_twopass_fulltile_with_qmax) {
@@ -1472,7 +1472,7 @@
       .pooling_tile(9, 8)
       .channels(8)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9P8X__SSE2_C8, channels_eq_8_twopass_subtile) {
@@ -1482,7 +1482,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1494,7 +1494,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1508,7 +1508,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1520,7 +1520,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1532,7 +1532,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(41)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1546,7 +1546,7 @@
           .channels(channels)
           .input_offset(41)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1560,7 +1560,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1574,7 +1574,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1588,7 +1588,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1602,7 +1602,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1615,7 +1615,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1627,7 +1627,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1639,7 +1639,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1653,7 +1653,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1669,7 +1669,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1682,7 +1682,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1694,7 +1694,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1708,7 +1708,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1722,7 +1722,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1736,7 +1736,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1750,7 +1750,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1764,7 +1764,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1777,7 +1777,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1789,7 +1789,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1801,7 +1801,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1815,7 +1815,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1831,7 +1831,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -1844,7 +1844,7 @@
         .pooling_elements(17)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1856,7 +1856,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(17)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1870,7 +1870,7 @@
           .channels(channels)
           .input_offset(17)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1884,7 +1884,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1898,7 +1898,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1912,7 +1912,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1926,7 +1926,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1939,7 +1939,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1951,7 +1951,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -1963,7 +1963,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1977,7 +1977,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -1993,7 +1993,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2006,7 +2006,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -2018,7 +2018,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -2032,7 +2032,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2046,7 +2046,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2060,7 +2060,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2074,7 +2074,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2088,7 +2088,7 @@
           .pooling_tile(9, 8)
           .channels(8)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2101,7 +2101,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -2113,7 +2113,7 @@
         .pooling_tile(9, 8)
         .channels(8)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -2125,7 +2125,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2139,7 +2139,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2155,7 +2155,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2171,7 +2171,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2187,7 +2187,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2203,7 +2203,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2219,7 +2219,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2234,7 +2234,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2248,7 +2248,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2261,7 +2261,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2275,7 +2275,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(8)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2291,7 +2291,7 @@
             .channels(channels)
             .input_offset(8)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2307,7 +2307,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2323,7 +2323,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2339,7 +2339,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2355,7 +2355,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2370,7 +2370,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2384,7 +2384,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2397,7 +2397,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2411,7 +2411,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2427,7 +2427,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2443,7 +2443,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2459,7 +2459,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2475,7 +2475,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2491,7 +2491,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2506,7 +2506,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2520,7 +2520,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -2535,7 +2535,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 8)
             .channels(channels)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2552,7 +2552,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_offset(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2571,7 +2571,7 @@
               .channels(channels)
               .input_offset(43)
               .zero_index(zero_index)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2590,7 +2590,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .input_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2609,7 +2609,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .input_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2628,7 +2628,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .output_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2647,7 +2647,7 @@
               .pooling_tile(9, 8)
               .channels(channels)
               .output_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2665,7 +2665,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2682,7 +2682,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2699,7 +2699,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_stride(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -2718,7 +2718,7 @@
               .step(step)
               .channels(channels)
               .output_stride(43)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -2732,7 +2732,7 @@
     .pooling_elements(17)
     .pooling_tile(9, 8)
     .channels(1)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_input_offset) {
@@ -2741,7 +2741,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_zero) {
@@ -2752,7 +2752,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2763,7 +2763,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_scale(scale)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2774,7 +2774,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_zero_point(zero_point)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2785,7 +2785,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .output_scale(scale)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2796,7 +2796,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .output_zero_point(zero_point)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2806,7 +2806,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmin(128)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_fulltile_with_qmax) {
@@ -2815,7 +2815,7 @@
     .pooling_tile(9, 8)
     .channels(1)
     .qmax(128)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9P8X__SCALAR_C1, channels_eq_1_twopass_subtile) {
@@ -2824,7 +2824,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2835,7 +2835,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2848,7 +2848,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2859,7 +2859,7 @@
       .pooling_elements(17)
       .pooling_tile(9, 8)
       .channels(channels)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2870,7 +2870,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2883,7 +2883,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2896,7 +2896,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2909,7 +2909,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2922,7 +2922,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2935,7 +2935,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2947,7 +2947,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2958,7 +2958,7 @@
       .pooling_tile(9, 8)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -2969,7 +2969,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2982,7 +2982,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -2997,7 +2997,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3009,7 +3009,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9, 8)
       .channels(1)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -3020,7 +3020,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -3033,7 +3033,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3046,7 +3046,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3059,7 +3059,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3072,7 +3072,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3085,7 +3085,7 @@
         .pooling_tile(9, 8)
         .channels(1)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3097,7 +3097,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -3108,7 +3108,7 @@
       .pooling_tile(9, 8)
       .channels(1)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -3119,7 +3119,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9, 8)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3132,7 +3132,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3147,7 +3147,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3162,7 +3162,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3177,7 +3177,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3192,7 +3192,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3207,7 +3207,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3221,7 +3221,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3234,7 +3234,7 @@
         .pooling_tile(9, 8)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -3248,7 +3248,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 8)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3264,7 +3264,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3282,7 +3282,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3300,7 +3300,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3318,7 +3318,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3336,7 +3336,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3354,7 +3354,7 @@
             .pooling_tile(9, 8)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3371,7 +3371,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3387,7 +3387,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3403,7 +3403,7 @@
           .pooling_tile(9, 8)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -3421,7 +3421,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -3435,7 +3435,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(8)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__NEON_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
@@ -3445,7 +3445,7 @@
       .pooling_tile(9)
       .channels(8)
       .input_offset(11)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__NEON_C8, channels_eq_8_unipass_fulltile_with_zero) {
@@ -3457,7 +3457,7 @@
         .channels(8)
         .input_offset(11)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3469,7 +3469,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3481,7 +3481,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3493,7 +3493,7 @@
         .pooling_tile(9)
         .channels(8)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3505,7 +3505,7 @@
         .pooling_tile(9)
         .channels(8)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3516,7 +3516,7 @@
       .pooling_tile(9)
       .channels(8)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__NEON_C8, channels_eq_8_unipass_fulltile_with_qmax) {
@@ -3526,7 +3526,7 @@
       .pooling_tile(9)
       .channels(8)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__NEON_C8, channels_eq_8_unipass_subtile) {
@@ -3536,7 +3536,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3548,7 +3548,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3562,7 +3562,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3574,7 +3574,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3586,7 +3586,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(67)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3600,7 +3600,7 @@
           .channels(channels)
           .input_offset(67)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3614,7 +3614,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3628,7 +3628,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3642,7 +3642,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3656,7 +3656,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3669,7 +3669,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3681,7 +3681,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3693,7 +3693,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3707,7 +3707,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3723,7 +3723,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -3736,7 +3736,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3748,7 +3748,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3762,7 +3762,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3776,7 +3776,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3790,7 +3790,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3804,7 +3804,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3818,7 +3818,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3831,7 +3831,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3843,7 +3843,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3855,7 +3855,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3869,7 +3869,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3885,7 +3885,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -3898,7 +3898,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3910,7 +3910,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(17)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -3924,7 +3924,7 @@
           .channels(channels)
           .input_offset(17)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3938,7 +3938,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3952,7 +3952,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3966,7 +3966,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3980,7 +3980,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -3993,7 +3993,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4005,7 +4005,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4017,7 +4017,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4031,7 +4031,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4047,7 +4047,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4063,7 +4063,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4080,7 +4080,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4099,7 +4099,7 @@
               .channels(channels)
               .input_offset(43)
               .zero_index(zero_index)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4118,7 +4118,7 @@
               .pooling_tile(9)
               .channels(channels)
               .input_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4137,7 +4137,7 @@
               .pooling_tile(9)
               .channels(channels)
               .input_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4156,7 +4156,7 @@
               .pooling_tile(9)
               .channels(channels)
               .output_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4175,7 +4175,7 @@
               .pooling_tile(9)
               .channels(channels)
               .output_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4193,7 +4193,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4210,7 +4210,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4227,7 +4227,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4246,7 +4246,7 @@
               .step(step)
               .channels(channels)
               .output_stride(43)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4262,7 +4262,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(8)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__SSE2_C8, channels_eq_8_unipass_fulltile_with_input_offset) {
@@ -4272,7 +4272,7 @@
       .pooling_tile(9)
       .channels(8)
       .input_offset(11)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__SSE2_C8, channels_eq_8_unipass_fulltile_with_zero) {
@@ -4284,7 +4284,7 @@
         .channels(8)
         .input_offset(11)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4296,7 +4296,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4308,7 +4308,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4320,7 +4320,7 @@
         .pooling_tile(9)
         .channels(8)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4332,7 +4332,7 @@
         .pooling_tile(9)
         .channels(8)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4343,7 +4343,7 @@
       .pooling_tile(9)
       .channels(8)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__SSE2_C8, channels_eq_8_unipass_fulltile_with_qmax) {
@@ -4353,7 +4353,7 @@
       .pooling_tile(9)
       .channels(8)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
   }
 
   TEST(QU8_AVGPOOL_MINMAX_9X__SSE2_C8, channels_eq_8_unipass_subtile) {
@@ -4363,7 +4363,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(8)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4375,7 +4375,7 @@
         .pooling_tile(9)
         .channels(8)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4389,7 +4389,7 @@
           .channels(8)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4401,7 +4401,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4413,7 +4413,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(67)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4427,7 +4427,7 @@
           .channels(channels)
           .input_offset(67)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4441,7 +4441,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4455,7 +4455,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4469,7 +4469,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4483,7 +4483,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4496,7 +4496,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4508,7 +4508,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4520,7 +4520,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4534,7 +4534,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(67)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4550,7 +4550,7 @@
             .channels(channels)
             .input_offset(67)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4563,7 +4563,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4575,7 +4575,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(11)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4589,7 +4589,7 @@
           .channels(channels)
           .input_offset(11)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4603,7 +4603,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4617,7 +4617,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4631,7 +4631,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4645,7 +4645,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4658,7 +4658,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4670,7 +4670,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4682,7 +4682,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4696,7 +4696,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(11)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4712,7 +4712,7 @@
             .channels(channels)
             .input_offset(11)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4725,7 +4725,7 @@
         .pooling_elements(9)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4737,7 +4737,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(17)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4751,7 +4751,7 @@
           .channels(channels)
           .input_offset(17)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4765,7 +4765,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4779,7 +4779,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4793,7 +4793,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_scale(scale)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4807,7 +4807,7 @@
           .pooling_tile(9)
           .channels(channels)
           .output_zero_point(zero_point)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4820,7 +4820,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmin(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4832,7 +4832,7 @@
         .pooling_tile(9)
         .channels(channels)
         .qmax(128)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
     }
   }
 
@@ -4844,7 +4844,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4858,7 +4858,7 @@
           .pooling_tile(9)
           .channels(channels)
           .input_offset(17)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
       }
     }
   }
@@ -4874,7 +4874,7 @@
             .channels(channels)
             .input_offset(17)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4890,7 +4890,7 @@
             .pooling_elements(pooling_elements)
             .pooling_tile(9, 0)
             .channels(channels)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4907,7 +4907,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .input_offset(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -4926,7 +4926,7 @@
               .channels(channels)
               .input_offset(43)
               .zero_index(zero_index)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4945,7 +4945,7 @@
               .pooling_tile(9)
               .channels(channels)
               .input_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4964,7 +4964,7 @@
               .pooling_tile(9)
               .channels(channels)
               .input_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -4983,7 +4983,7 @@
               .pooling_tile(9)
               .channels(channels)
               .output_scale(scale)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -5002,7 +5002,7 @@
               .pooling_tile(9)
               .channels(channels)
               .output_zero_point(zero_point)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -5020,7 +5020,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmin(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -5037,7 +5037,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .qmax(128)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -5054,7 +5054,7 @@
             .pooling_tile(9, 0)
             .channels(channels)
             .output_stride(43)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
         }
       }
     }
@@ -5073,7 +5073,7 @@
               .step(step)
               .channels(channels)
               .output_stride(43)
-              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8);
+              .Test(xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8, xnn_init_qu8_avgpool_minmax_params);
           }
         }
       }
@@ -5087,7 +5087,7 @@
     .pooling_elements(9)
     .pooling_tile(9)
     .channels(1)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_input_offset) {
@@ -5096,7 +5096,7 @@
     .pooling_tile(9)
     .channels(1)
     .input_offset(3)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_zero) {
@@ -5107,7 +5107,7 @@
       .channels(1)
       .input_offset(3)
       .zero_index(zero_index)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5118,7 +5118,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_scale(scale)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5129,7 +5129,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_zero_point(zero_point)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5140,7 +5140,7 @@
       .pooling_tile(9)
       .channels(1)
       .output_scale(scale)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5151,7 +5151,7 @@
       .pooling_tile(9)
       .channels(1)
       .output_zero_point(zero_point)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5161,7 +5161,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmin(128)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_fulltile_with_qmax) {
@@ -5170,7 +5170,7 @@
     .pooling_tile(9)
     .channels(1)
     .qmax(128)
-    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+    .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
 }
 
 TEST(QU8_AVGPOOL_MINMAX_9X__SCALAR_C1, channels_eq_1_unipass_subtile) {
@@ -5179,7 +5179,7 @@
       .pooling_elements(pooling_elements)
       .pooling_tile(9)
       .channels(1)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5190,7 +5190,7 @@
       .pooling_tile(9)
       .channels(1)
       .input_offset(3)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5203,7 +5203,7 @@
         .channels(1)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5214,7 +5214,7 @@
       .pooling_elements(9)
       .pooling_tile(9)
       .channels(channels)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5225,7 +5225,7 @@
       .pooling_tile(9)
       .channels(channels)
       .input_offset(3)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5238,7 +5238,7 @@
         .channels(channels)
         .input_offset(3)
         .zero_index(zero_index)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5251,7 +5251,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5264,7 +5264,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5277,7 +5277,7 @@
         .pooling_tile(9)
         .channels(channels)
         .output_scale(scale)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5290,7 +5290,7 @@
         .pooling_tile(9)
         .channels(channels)
         .output_zero_point(zero_point)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5302,7 +5302,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmin(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5313,7 +5313,7 @@
       .pooling_tile(9)
       .channels(channels)
       .qmax(128)
-      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+      .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
   }
 }
 
@@ -5324,7 +5324,7 @@
         .pooling_elements(pooling_elements)
         .pooling_tile(9)
         .channels(channels)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5337,7 +5337,7 @@
         .pooling_tile(9)
         .channels(channels)
         .input_offset(3)
-        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+        .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
     }
   }
 }
@@ -5352,7 +5352,7 @@
           .channels(channels)
           .input_offset(3)
           .zero_index(zero_index)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5367,7 +5367,7 @@
           .pooling_elements(pooling_elements)
           .pooling_tile(9, 0)
           .channels(channels)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5383,7 +5383,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .input_offset(7)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5401,7 +5401,7 @@
             .channels(channels)
             .input_offset(7)
             .zero_index(zero_index)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -5419,7 +5419,7 @@
             .pooling_tile(9)
             .channels(channels)
             .input_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -5437,7 +5437,7 @@
             .pooling_tile(9)
             .channels(channels)
             .input_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -5455,7 +5455,7 @@
             .pooling_tile(9)
             .channels(channels)
             .output_scale(scale)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -5473,7 +5473,7 @@
             .pooling_tile(9)
             .channels(channels)
             .output_zero_point(zero_point)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
@@ -5490,7 +5490,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmin(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5506,7 +5506,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .qmax(128)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5522,7 +5522,7 @@
           .pooling_tile(9, 0)
           .channels(channels)
           .output_stride(7)
-          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+          .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
       }
     }
   }
@@ -5540,7 +5540,7 @@
             .step(step)
             .channels(channels)
             .output_stride(7)
-            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, AvgPoolMicrokernelTester::Variant::Scalar);
+            .Test(xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1, xnn_init_qu8_avgpool_minmax_scalar_params);
         }
       }
     }
diff --git a/test/qu8-avgpool-minmax.yaml b/test/qu8-avgpool-minmax.yaml
index 64af40e..67a8f4a 100644
--- a/test/qu8-avgpool-minmax.yaml
+++ b/test/qu8-avgpool-minmax.yaml
@@ -3,8 +3,14 @@
 # This source code is licensed under the BSD-style license found in the
 # LICENSE file in the root directory of this source tree.
 - name: xnn_qu8_avgpool_minmax_ukernel_9p8x__neon_c8
+  init: xnn_init_qu8_avgpool_minmax_params
 - name: xnn_qu8_avgpool_minmax_ukernel_9p8x__sse2_c8
+  init: xnn_init_qu8_avgpool_minmax_params
 - name: xnn_qu8_avgpool_minmax_ukernel_9p8x__scalar_c1
+  init: xnn_init_qu8_avgpool_minmax_scalar_params
 - name: xnn_qu8_avgpool_minmax_ukernel_9x__neon_c8
+  init: xnn_init_qu8_avgpool_minmax_params
 - name: xnn_qu8_avgpool_minmax_ukernel_9x__sse2_c8
+  init: xnn_init_qu8_avgpool_minmax_params
 - name: xnn_qu8_avgpool_minmax_ukernel_9x__scalar_c1
+  init: xnn_init_qu8_avgpool_minmax_scalar_params
diff --git a/tools/generate-avgpool-test.py b/tools/generate-avgpool-test.py
index bfafba2..fb31512 100755
--- a/tools/generate-avgpool-test.py
+++ b/tools/generate-avgpool-test.py
@@ -2392,12 +2392,13 @@
 """
 
 
-def generate_test_cases(ukernel, primary_tile, incremental_tile, channel_tile,
-                        isa):
+def generate_test_cases(ukernel, init_fn, primary_tile, incremental_tile,
+                        channel_tile, isa):
   """Generates all tests cases for a AVGPOOL micro-kernel.
 
   Args:
     ukernel: C name of the micro-kernel function.
+    init_fn: C name of the function to initialize microkernel parameters.
     primary_tile: Number of rows (pixels) processed per one iteration of the
                   primary outer loop of the micro-kernel.
     incremental_tile: Number of rows (pixels) processed per one iteration of
@@ -2412,9 +2413,7 @@
   """
   _, test_name = ukernel.split("_", 1)
   _, datatype, ukernel_type, _ = ukernel.split("_", 3)
-  test_args = [ukernel]
-  if isa == "wasm" or not isa:
-    test_args.append("AvgPoolMicrokernelTester::Variant::Scalar")
+  test_args = [ukernel, init_fn]
   return xngen.preprocess(AVGPOOL_TEST_TEMPLATE, {
       "TEST_NAME": test_name.upper().replace("UKERNEL_", ""),
       "TEST_ARGS": test_args,
@@ -2461,14 +2460,15 @@
 
     for ukernel_spec in spec_yaml:
       name = ukernel_spec["name"]
+      init_fn = ukernel_spec.get("init")
       primary_tile, incremental_tile, channel_tile, arch, isa = \
         split_ukernel_name(name)
 
       # specification can override architecture
       arch = ukernel_spec.get("arch", arch)
 
-      test_case = generate_test_cases(name, primary_tile, incremental_tile,
-                                      channel_tile, isa)
+      test_case = generate_test_cases(name, init_fn, primary_tile,
+                                      incremental_tile, channel_tile, isa)
       tests += "\n\n" + xnncommon.postprocess_test_case(test_case, arch, isa)
 
     txt_changed = True
