diff --git a/test/u8-vclamp.cc b/test/u8-vclamp.cc
index e624b5e..52bf748 100644
--- a/test/u8-vclamp.cc
+++ b/test/u8-vclamp.cc
@@ -22,7 +22,7 @@
     TEST_REQUIRES_ARM_NEON;
     VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+      .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
   }
 
   TEST(U8_VCLAMP__NEON_X64, batch_div_64) {
@@ -30,7 +30,7 @@
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+        .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
     }
   }
 
@@ -39,7 +39,7 @@
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+        .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
     }
   }
 
@@ -48,7 +48,7 @@
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+        .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
     }
   }
 
@@ -58,7 +58,7 @@
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+        .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
     }
   }
 
@@ -69,7 +69,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+          .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
       }
     }
   }
@@ -81,7 +81,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_u8_vclamp_ukernel__neon_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_neon_params);
+          .Test(xnn_u8_vclamp_ukernel__neon_x64, xnn_init_u8_minmax_neon_params);
       }
     }
   }
@@ -93,7 +93,7 @@
     TEST_REQUIRES_X86_SSE2;
     VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+      .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
   }
 
   TEST(U8_VCLAMP__SSE2_X64, batch_div_64) {
@@ -101,7 +101,7 @@
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+        .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
     }
   }
 
@@ -110,7 +110,7 @@
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+        .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
     }
   }
 
@@ -119,7 +119,7 @@
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+        .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
     }
   }
 
@@ -129,7 +129,7 @@
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+        .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
     }
   }
 
@@ -140,7 +140,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+          .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
       }
     }
   }
@@ -152,7 +152,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_u8_vclamp_ukernel__sse2_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_sse2_params);
+          .Test(xnn_u8_vclamp_ukernel__sse2_x64, xnn_init_u8_minmax_sse2_params);
       }
     }
   }
@@ -163,14 +163,14 @@
   TEST(U8_VCLAMP__WASMSIMD_X64, batch_eq_64) {
     VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+      .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
   }
 
   TEST(U8_VCLAMP__WASMSIMD_X64, batch_div_64) {
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
     }
   }
 
@@ -178,7 +178,7 @@
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
     }
   }
 
@@ -186,7 +186,7 @@
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
     }
   }
 
@@ -195,7 +195,7 @@
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+        .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
     }
   }
 
@@ -205,7 +205,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+          .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
       }
     }
   }
@@ -216,7 +216,7 @@
         VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_wasmsimd_params);
+          .Test(xnn_u8_vclamp_ukernel__wasmsimd_x64, xnn_init_u8_minmax_wasmsimd_params);
       }
     }
   }
@@ -226,14 +226,14 @@
 TEST(U8_VCLAMP__SCALAR_X4, batch_eq_4) {
   VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+    .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
 }
 
 TEST(U8_VCLAMP__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
     VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+      .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
   }
 }
 
@@ -241,7 +241,7 @@
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
     VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+      .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
   }
 }
 
@@ -249,7 +249,7 @@
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
     VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+      .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
   }
 }
 
@@ -258,7 +258,7 @@
     VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+      .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
   }
 }
 
@@ -268,7 +268,7 @@
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmin(qmin)
-        .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+        .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
     }
   }
 }
@@ -279,7 +279,7 @@
       VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmax(qmax)
-        .Test(xnn_u8_vclamp_ukernel__scalar_x4, VUnaryMicrokernelTester::OpType::Clamp, xnn_init_u8_minmax_scalar_params);
+        .Test(xnn_u8_vclamp_ukernel__scalar_x4, xnn_init_u8_minmax_scalar_params);
     }
   }
 }
