Rename VUnOpMicrokernelTester -> VUnaryMicrokernelTester

Make the class name match the filename

PiperOrigin-RevId: 373632112
diff --git a/test/f16-vrelu.cc b/test/f16-vrelu.cc
index a9e5f1d..125fbbb 100644
--- a/test/f16-vrelu.cc
+++ b/test/f16-vrelu.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM64
   TEST(F16_VRELU__NEONFP16ARITH_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM64
   TEST(F16_VRELU__NEONFP16ARITH_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F16_VRELU__NEONFP16ARITH_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FP16_ARITH;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f16_vrelu_ukernel__neonfp16arith_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_ARM64
diff --git a/test/f32-vabs.cc b/test/f32-vabs.cc
index 7d72eaa..75a08ab 100644
--- a/test/f32-vabs.cc
+++ b/test/f32-vabs.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VABS__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VABS__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VABS__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -395,41 +395,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VABS__WASMSIMD_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__WASMSIMD_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -437,145 +437,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VABS__WASMSIMD_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Abs);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Abs);
   }
 
   TEST(F32_VABS__WASMSIMD_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 
   TEST(F32_VABS__WASMSIMD_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Abs);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Abs);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VABS__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VABS__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VABS__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VABS__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VABS__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VABS__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VABS__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Abs, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vabs_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Abs, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vclamp.cc b/test/f32-vclamp.cc
index 822a997..0859ce2 100644
--- a/test/f32-vclamp.cc
+++ b/test/f32-vclamp.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VCLAMP__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -66,10 +66,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -78,10 +78,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -91,45 +91,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VCLAMP__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -137,10 +137,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -149,10 +149,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -162,45 +162,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -208,10 +208,10 @@
     TEST_REQUIRES_X86_SSE;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -220,10 +220,10 @@
     TEST_REQUIRES_X86_SSE;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -233,45 +233,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -279,10 +279,10 @@
     TEST_REQUIRES_X86_SSE;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -291,10 +291,10 @@
     TEST_REQUIRES_X86_SSE;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -304,45 +304,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -350,10 +350,10 @@
     TEST_REQUIRES_X86_AVX;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -362,10 +362,10 @@
     TEST_REQUIRES_X86_AVX;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -375,45 +375,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -421,10 +421,10 @@
     TEST_REQUIRES_X86_AVX;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -433,10 +433,10 @@
     TEST_REQUIRES_X86_AVX;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -446,45 +446,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -492,10 +492,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -504,10 +504,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -517,45 +517,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VCLAMP__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
@@ -563,10 +563,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -575,10 +575,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -587,51 +587,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -639,10 +639,10 @@
   TEST(F32_VCLAMP__WASMSIMD_ARM_X4, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -651,51 +651,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -703,10 +703,10 @@
   TEST(F32_VCLAMP__WASMSIMD_ARM_X8, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_arm_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -715,51 +715,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -767,10 +767,10 @@
   TEST(F32_VCLAMP__WASMSIMD_X86_X4, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -779,51 +779,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -831,10 +831,10 @@
   TEST(F32_VCLAMP__WASMSIMD_X86_X8, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasmsimd_x86_x8), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -843,35 +843,35 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASM_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASM_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X1, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -879,10 +879,10 @@
   TEST(F32_VCLAMP__WASM_X1, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -891,51 +891,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASM_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASM_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X2, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -943,10 +943,10 @@
   TEST(F32_VCLAMP__WASM_X2, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -955,51 +955,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VCLAMP__WASM_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
   }
 
   TEST(F32_VCLAMP__WASM_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
     }
   }
 
   TEST(F32_VCLAMP__WASM_X4, qmin) {
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -1007,10 +1007,10 @@
   TEST(F32_VCLAMP__WASM_X4, qmax) {
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::Clamp);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::Clamp);
       }
     }
   }
@@ -1018,35 +1018,35 @@
 
 
 TEST(F32_VCLAMP__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VCLAMP__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X1, qmin) {
   for (uint8_t qmin = 1; qmin < 255; qmin++) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmin(qmin)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -1054,61 +1054,61 @@
 TEST(F32_VCLAMP__SCALAR_X1, qmax) {
   for (uint8_t qmax = 1; qmax < 255; qmax++) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmax(qmax)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
 
 TEST(F32_VCLAMP__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VCLAMP__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X2, qmin) {
   for (uint8_t qmin = 1; qmin < 255; qmin++) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmin(qmin)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -1116,61 +1116,61 @@
 TEST(F32_VCLAMP__SCALAR_X2, qmax) {
   for (uint8_t qmax = 1; qmax < 255; qmax++) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmax(qmax)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
 
 TEST(F32_VCLAMP__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VCLAMP__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VCLAMP__SCALAR_X4, qmin) {
   for (uint8_t qmin = 1; qmin < 255; qmin++) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmin(qmin)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -1178,10 +1178,10 @@
 TEST(F32_VCLAMP__SCALAR_X4, qmax) {
   for (uint8_t qmax = 1; qmax < 255; qmax++) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .qmax(qmax)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Clamp, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vclamp_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Clamp, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
diff --git a/test/f32-velu.cc b/test/f32-velu.cc
index 4b7cdc7..f52868c 100644
--- a/test/f32-velu.cc
+++ b/test/f32-velu.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -66,10 +66,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -78,10 +78,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -90,10 +90,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -103,45 +103,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -149,10 +149,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -161,10 +161,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -173,10 +173,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -186,45 +186,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X12, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -232,10 +232,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -244,10 +244,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -256,10 +256,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -269,45 +269,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -315,10 +315,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -327,10 +327,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -339,10 +339,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -352,45 +352,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X20, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -398,10 +398,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -410,10 +410,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -422,10 +422,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -435,45 +435,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_LUT16_P3_X24, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -481,10 +481,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -493,10 +493,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -505,10 +505,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -518,45 +518,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -564,10 +564,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -576,10 +576,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -588,10 +588,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -601,45 +601,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -647,10 +647,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -659,10 +659,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -671,10 +671,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -684,45 +684,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X12, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -730,10 +730,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -742,10 +742,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -754,10 +754,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -767,45 +767,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -813,10 +813,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -825,10 +825,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -837,10 +837,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -850,45 +850,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X20, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -896,10 +896,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -908,10 +908,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -920,10 +920,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -933,45 +933,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEON_RR2_P6_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEON_RR2_P6_X24, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -979,10 +979,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -991,10 +991,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1003,10 +1003,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neon_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1016,45 +1016,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1062,10 +1062,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1074,10 +1074,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1086,10 +1086,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1099,45 +1099,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1145,10 +1145,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1157,10 +1157,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1169,10 +1169,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1182,45 +1182,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1228,10 +1228,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1240,10 +1240,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1252,10 +1252,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1265,45 +1265,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1311,10 +1311,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1323,10 +1323,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1335,10 +1335,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1348,45 +1348,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1394,10 +1394,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1406,10 +1406,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1418,10 +1418,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1431,45 +1431,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_LUT16_P3_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1477,10 +1477,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1489,10 +1489,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1501,10 +1501,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1514,45 +1514,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1560,10 +1560,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1572,10 +1572,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1584,10 +1584,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1597,45 +1597,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1643,10 +1643,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1655,10 +1655,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1667,10 +1667,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1680,45 +1680,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1726,10 +1726,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1738,10 +1738,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1750,10 +1750,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1763,45 +1763,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1809,10 +1809,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1821,10 +1821,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1833,10 +1833,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1846,45 +1846,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1892,10 +1892,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1904,10 +1904,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1916,10 +1916,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1929,45 +1929,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__NEONFMA_RR1_P6_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -1975,10 +1975,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1987,10 +1987,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -1999,10 +1999,10 @@
     TEST_REQUIRES_ARM_NEON_FMA;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__neonfma_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2012,45 +2012,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2058,10 +2058,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2070,10 +2070,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2082,10 +2082,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2095,45 +2095,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2141,10 +2141,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2153,10 +2153,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2165,10 +2165,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2178,45 +2178,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X12, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2224,10 +2224,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2236,10 +2236,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2248,10 +2248,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2261,45 +2261,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X16, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2307,10 +2307,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2319,10 +2319,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2331,10 +2331,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2344,45 +2344,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X20, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2390,10 +2390,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2402,10 +2402,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2414,10 +2414,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2427,45 +2427,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_LUT16_P3_X24, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2473,10 +2473,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2485,10 +2485,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2497,10 +2497,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2510,45 +2510,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2556,10 +2556,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2568,10 +2568,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2580,10 +2580,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2593,45 +2593,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2639,10 +2639,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2651,10 +2651,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2663,10 +2663,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2676,45 +2676,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X12, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2722,10 +2722,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2734,10 +2734,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2746,10 +2746,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2759,45 +2759,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X16, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2805,10 +2805,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2817,10 +2817,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2829,10 +2829,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2842,45 +2842,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X20, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2888,10 +2888,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2900,10 +2900,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2912,10 +2912,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2925,45 +2925,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE2_RR2_P6_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE2_RR2_P6_X24, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -2971,10 +2971,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2983,10 +2983,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -2995,10 +2995,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse2_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3008,45 +3008,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3054,10 +3054,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3066,10 +3066,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3078,10 +3078,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3091,45 +3091,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3137,10 +3137,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3149,10 +3149,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3161,10 +3161,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3174,45 +3174,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X12, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3220,10 +3220,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3232,10 +3232,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3244,10 +3244,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3257,45 +3257,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X16, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3303,10 +3303,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3315,10 +3315,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3327,10 +3327,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3340,45 +3340,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X20, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3386,10 +3386,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3398,10 +3398,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3410,10 +3410,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3423,45 +3423,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_LUT16_P3_X24, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3469,10 +3469,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3481,10 +3481,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3493,10 +3493,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3506,45 +3506,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3552,10 +3552,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3564,10 +3564,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3576,10 +3576,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3589,45 +3589,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3635,10 +3635,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3647,10 +3647,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3659,10 +3659,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3672,45 +3672,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X12, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3718,10 +3718,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3730,10 +3730,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3742,10 +3742,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3755,45 +3755,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X16, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3801,10 +3801,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3813,10 +3813,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3825,10 +3825,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3838,45 +3838,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X20, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3884,10 +3884,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3896,10 +3896,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3908,10 +3908,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3921,45 +3921,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__SSE41_RR2_P6_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__SSE41_RR2_P6_X24, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -3967,10 +3967,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3979,10 +3979,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -3991,10 +3991,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__sse41_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4004,45 +4004,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4050,10 +4050,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4062,10 +4062,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4074,10 +4074,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4087,45 +4087,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4133,10 +4133,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4145,10 +4145,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4157,10 +4157,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4170,45 +4170,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X24, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4216,10 +4216,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4228,10 +4228,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4240,10 +4240,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4253,45 +4253,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X32, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4299,10 +4299,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4311,10 +4311,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4323,10 +4323,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4336,45 +4336,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X40, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4382,10 +4382,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4394,10 +4394,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4406,10 +4406,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4419,45 +4419,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT4_P4_PERM_X48, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4465,10 +4465,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4477,10 +4477,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4489,10 +4489,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4502,45 +4502,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4548,10 +4548,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4560,10 +4560,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4572,10 +4572,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4585,45 +4585,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4631,10 +4631,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4643,10 +4643,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4655,10 +4655,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4668,45 +4668,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X24, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4714,10 +4714,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4726,10 +4726,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4738,10 +4738,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4751,45 +4751,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X32, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4797,10 +4797,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4809,10 +4809,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4821,10 +4821,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4834,45 +4834,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X40, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4880,10 +4880,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4892,10 +4892,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4904,10 +4904,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4917,45 +4917,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_LUT16_P3_X48, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -4963,10 +4963,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4975,10 +4975,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -4987,10 +4987,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_lut16_p3_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5000,45 +5000,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5046,10 +5046,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5058,10 +5058,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5070,10 +5070,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5083,45 +5083,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5129,10 +5129,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5141,10 +5141,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5153,10 +5153,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5166,45 +5166,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X24, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5212,10 +5212,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5224,10 +5224,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5236,10 +5236,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5249,45 +5249,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X32, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5295,10 +5295,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5307,10 +5307,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5319,10 +5319,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5332,45 +5332,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X40, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5378,10 +5378,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5390,10 +5390,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5402,10 +5402,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5415,45 +5415,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX_RR2_P6_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX_RR2_P6_X48, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5461,10 +5461,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5473,10 +5473,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5485,10 +5485,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx_rr2_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5498,45 +5498,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5544,10 +5544,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5556,10 +5556,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5568,10 +5568,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5581,45 +5581,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5627,10 +5627,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5639,10 +5639,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5651,10 +5651,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5664,45 +5664,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5710,10 +5710,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5722,10 +5722,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5734,10 +5734,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5747,45 +5747,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5793,10 +5793,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5805,10 +5805,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5817,10 +5817,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5830,45 +5830,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5876,10 +5876,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5888,10 +5888,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5900,10 +5900,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5913,45 +5913,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -5959,10 +5959,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5971,10 +5971,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5983,10 +5983,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -5996,45 +5996,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6042,10 +6042,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6054,10 +6054,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6066,10 +6066,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6079,45 +6079,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6125,10 +6125,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6137,10 +6137,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6149,10 +6149,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6162,45 +6162,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6208,10 +6208,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6220,10 +6220,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6232,10 +6232,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6245,45 +6245,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT4_P4_PERM_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6291,10 +6291,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6303,10 +6303,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6315,10 +6315,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut4_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6328,45 +6328,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6374,10 +6374,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6386,10 +6386,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6398,10 +6398,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6411,45 +6411,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6457,10 +6457,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6469,10 +6469,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6481,10 +6481,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6494,45 +6494,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6540,10 +6540,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6552,10 +6552,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6564,10 +6564,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6577,45 +6577,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6623,10 +6623,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6635,10 +6635,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6647,10 +6647,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6660,45 +6660,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6706,10 +6706,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6718,10 +6718,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6730,10 +6730,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6743,45 +6743,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6789,10 +6789,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6801,10 +6801,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6813,10 +6813,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6826,45 +6826,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6872,10 +6872,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6884,10 +6884,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6896,10 +6896,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6909,45 +6909,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -6955,10 +6955,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6967,10 +6967,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6979,10 +6979,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -6992,45 +6992,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7038,10 +7038,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7050,10 +7050,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7062,10 +7062,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7075,45 +7075,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT8_P4_PERM_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7121,10 +7121,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7133,10 +7133,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7145,10 +7145,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut8_p4_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7158,45 +7158,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7204,10 +7204,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7216,10 +7216,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7228,10 +7228,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7241,45 +7241,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7287,10 +7287,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7299,10 +7299,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7311,10 +7311,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7324,45 +7324,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7370,10 +7370,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7382,10 +7382,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7394,10 +7394,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7407,45 +7407,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7453,10 +7453,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7465,10 +7465,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7477,10 +7477,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7490,45 +7490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7536,10 +7536,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7548,10 +7548,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7560,10 +7560,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7573,45 +7573,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7619,10 +7619,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7631,10 +7631,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7643,10 +7643,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7656,45 +7656,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7702,10 +7702,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7714,10 +7714,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7726,10 +7726,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7739,45 +7739,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7785,10 +7785,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7797,10 +7797,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7809,10 +7809,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7822,45 +7822,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7868,10 +7868,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7880,10 +7880,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7892,10 +7892,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7905,45 +7905,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_LUT16_P3_GATHER_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -7951,10 +7951,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7963,10 +7963,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7975,10 +7975,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_lut16_p3_gather_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -7988,45 +7988,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8034,10 +8034,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8046,10 +8046,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8058,10 +8058,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8071,45 +8071,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8117,10 +8117,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8129,10 +8129,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8141,10 +8141,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8154,45 +8154,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8200,10 +8200,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8212,10 +8212,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8224,10 +8224,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8237,45 +8237,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8283,10 +8283,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8295,10 +8295,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8307,10 +8307,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8320,45 +8320,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8366,10 +8366,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8378,10 +8378,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8390,10 +8390,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x40), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8403,45 +8403,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8449,10 +8449,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8461,10 +8461,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8473,10 +8473,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8486,45 +8486,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8532,10 +8532,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8544,10 +8544,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8556,10 +8556,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x56), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8569,45 +8569,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8615,10 +8615,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8627,10 +8627,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8639,10 +8639,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8652,45 +8652,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8698,10 +8698,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8710,10 +8710,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8722,10 +8722,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x72), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8735,45 +8735,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX2_RR1_P6_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX2_RR1_P6_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8781,10 +8781,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8793,10 +8793,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8805,10 +8805,10 @@
     TEST_REQUIRES_X86_AVX2;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx2_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8818,45 +8818,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8864,10 +8864,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8876,10 +8876,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8888,10 +8888,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8901,45 +8901,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -8947,10 +8947,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8959,10 +8959,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8971,10 +8971,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -8984,45 +8984,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9030,10 +9030,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9042,10 +9042,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9054,10 +9054,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9067,45 +9067,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9113,10 +9113,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9125,10 +9125,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9137,10 +9137,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9150,45 +9150,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9196,10 +9196,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9208,10 +9208,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9220,10 +9220,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9233,45 +9233,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9279,10 +9279,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9291,10 +9291,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9303,10 +9303,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9316,45 +9316,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9362,10 +9362,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9374,10 +9374,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9386,10 +9386,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9399,45 +9399,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_LUT16_P3_PERM_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9445,10 +9445,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9457,10 +9457,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9469,10 +9469,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_lut16_p3_perm_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9482,45 +9482,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9528,10 +9528,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9540,10 +9540,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9552,10 +9552,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9565,45 +9565,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9611,10 +9611,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9623,10 +9623,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9635,10 +9635,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x32), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9648,45 +9648,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9694,10 +9694,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9706,10 +9706,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9718,10 +9718,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x48), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9731,45 +9731,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9777,10 +9777,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9789,10 +9789,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9801,10 +9801,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x64), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9814,45 +9814,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9860,10 +9860,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9872,10 +9872,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9884,10 +9884,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x80), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9897,45 +9897,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -9943,10 +9943,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9955,10 +9955,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9967,10 +9967,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x96), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -9980,45 +9980,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -10026,10 +10026,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10038,10 +10038,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10050,10 +10050,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x112), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10063,45 +10063,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__AVX512F_RR1_P6_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
@@ -10109,10 +10109,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10121,10 +10121,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10133,10 +10133,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__avx512f_rr1_p6_x128), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10145,51 +10145,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10197,10 +10197,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10208,10 +10208,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10220,51 +10220,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10272,10 +10272,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10283,10 +10283,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X8, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10295,51 +10295,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10347,10 +10347,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10358,10 +10358,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X12, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10370,51 +10370,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10422,10 +10422,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10433,10 +10433,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X16, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10445,51 +10445,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10497,10 +10497,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10508,10 +10508,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X20, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10520,51 +10520,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10572,10 +10572,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10583,10 +10583,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_LUT16_P3_X24, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10595,51 +10595,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10647,10 +10647,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10658,10 +10658,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10670,51 +10670,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10722,10 +10722,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10733,10 +10733,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X8, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10745,51 +10745,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10797,10 +10797,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10808,10 +10808,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X12, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10820,51 +10820,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10872,10 +10872,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10883,10 +10883,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X16, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10895,51 +10895,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10947,10 +10947,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10958,10 +10958,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X20, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -10970,51 +10970,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11022,10 +11022,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11033,10 +11033,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_LUT16_P3_X24, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_lut16_p3_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11045,51 +11045,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11097,10 +11097,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11108,10 +11108,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11120,51 +11120,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11172,10 +11172,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11183,10 +11183,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X8, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11195,51 +11195,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11247,10 +11247,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11258,10 +11258,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X12, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11270,51 +11270,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11322,10 +11322,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11333,10 +11333,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X16, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11345,51 +11345,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11397,10 +11397,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11408,10 +11408,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X20, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11420,51 +11420,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11472,10 +11472,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11483,10 +11483,10 @@
   TEST(F32_VELU__WASMSIMD_ARM_RR2_P6_X24, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_arm_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11495,51 +11495,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11547,10 +11547,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11558,10 +11558,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11570,51 +11570,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11622,10 +11622,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11633,10 +11633,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X8, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x8), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11645,51 +11645,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11697,10 +11697,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11708,10 +11708,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X12, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x12), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11720,51 +11720,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11772,10 +11772,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11783,10 +11783,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X16, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x16), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11795,51 +11795,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11847,10 +11847,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11858,10 +11858,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X20, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x20), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11870,51 +11870,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11922,10 +11922,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11933,10 +11933,10 @@
   TEST(F32_VELU__WASMSIMD_X86_RR2_P6_X24, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasmsimd_x86_rr2_p6_x24), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11945,35 +11945,35 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11981,10 +11981,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -11992,10 +11992,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X1, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12004,51 +12004,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12056,10 +12056,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12067,10 +12067,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X2, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12079,51 +12079,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_eq_3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(3)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_div_3) {
     for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_lt_3) {
     for (size_t batch_size = 1; batch_size < 3; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, batch_gt_3) {
     for (size_t batch_size = 4; batch_size < 6; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, inplace) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12131,10 +12131,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12142,10 +12142,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X3, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12154,51 +12154,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12206,10 +12206,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12217,10 +12217,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12229,51 +12229,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_eq_5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(5)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_div_5) {
     for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_lt_5) {
     for (size_t batch_size = 1; batch_size < 5; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, batch_gt_5) {
     for (size_t batch_size = 6; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, inplace) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12281,10 +12281,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12292,10 +12292,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X5, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12304,51 +12304,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_eq_6) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(6)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_div_6) {
     for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_lt_6) {
     for (size_t batch_size = 1; batch_size < 6; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, batch_gt_6) {
     for (size_t batch_size = 7; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, inplace) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12356,10 +12356,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12367,10 +12367,10 @@
   TEST(F32_VELU__WASM_RR2_LUT16_P3_X6, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12379,35 +12379,35 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X1, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12415,10 +12415,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X1, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12426,10 +12426,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X1, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12438,51 +12438,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X2, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12490,10 +12490,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X2, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12501,10 +12501,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X2, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12513,51 +12513,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X3, batch_eq_3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(3)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X3, batch_div_3) {
     for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X3, batch_lt_3) {
     for (size_t batch_size = 1; batch_size < 3; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X3, batch_gt_3) {
     for (size_t batch_size = 4; batch_size < 6; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X3, inplace) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X3, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12565,10 +12565,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X3, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12576,10 +12576,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X3, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12588,51 +12588,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X4, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12640,10 +12640,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X4, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12651,10 +12651,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X4, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12663,51 +12663,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X5, batch_eq_5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(5)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X5, batch_div_5) {
     for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X5, batch_lt_5) {
     for (size_t batch_size = 1; batch_size < 5; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X5, batch_gt_5) {
     for (size_t batch_size = 6; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X5, inplace) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X5, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12715,10 +12715,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X5, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12726,10 +12726,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X5, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12738,51 +12738,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VELU__WASM_RR2_P6_X6, batch_eq_6) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(6)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X6, batch_div_6) {
     for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X6, batch_lt_6) {
     for (size_t batch_size = 1; batch_size < 6; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X6, batch_gt_6) {
     for (size_t batch_size = 7; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X6, inplace) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
     }
   }
 
   TEST(F32_VELU__WASM_RR2_P6_X6, prescale) {
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12790,10 +12790,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X6, alpha) {
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12801,10 +12801,10 @@
   TEST(F32_VELU__WASM_RR2_P6_X6, beta) {
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__wasm_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU);
       }
     }
   }
@@ -12812,35 +12812,35 @@
 
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -12848,10 +12848,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -12859,60 +12859,61 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X1, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -12920,10 +12921,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -12931,60 +12932,61 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X2, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_eq_3) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(3)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_div_3) {
   for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_lt_3) {
   for (size_t batch_size = 1; batch_size < 3; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, batch_gt_3) {
   for (size_t batch_size = 4; batch_size < 6; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, inplace) {
   for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -12992,10 +12994,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13003,60 +13005,61 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X3, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13064,10 +13067,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13075,60 +13078,61 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X4, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_eq_5) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(5)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_div_5) {
   for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_lt_5) {
   for (size_t batch_size = 1; batch_size < 5; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, batch_gt_5) {
   for (size_t batch_size = 6; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, inplace) {
   for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13136,10 +13140,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13147,60 +13151,61 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X5, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_eq_6) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(6)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_div_6) {
   for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_lt_6) {
   for (size_t batch_size = 1; batch_size < 6; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, batch_gt_6) {
   for (size_t batch_size = 7; batch_size < 12; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, inplace) {
   for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13208,10 +13213,10 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13219,44 +13224,45 @@
 TEST(F32_VELU__SCALAR_RR2_LUT16_P3_X6, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_lut16_p3_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X1, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13264,10 +13270,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X1, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13275,60 +13281,61 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X1, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x1), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X2, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13336,10 +13343,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X2, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13347,60 +13354,61 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X2, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x2), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_eq_3) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(3)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_div_3) {
   for (size_t batch_size = 6; batch_size < 30; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_lt_3) {
   for (size_t batch_size = 1; batch_size < 3; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X3, batch_gt_3) {
   for (size_t batch_size = 4; batch_size < 6; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X3, inplace) {
   for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X3, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13408,10 +13416,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X3, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13419,60 +13427,61 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X3, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 15; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x3), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X4, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13480,10 +13489,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X4, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13491,60 +13500,61 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X4, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x4), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_eq_5) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(5)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_div_5) {
   for (size_t batch_size = 10; batch_size < 50; batch_size += 5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_lt_5) {
   for (size_t batch_size = 1; batch_size < 5; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X5, batch_gt_5) {
   for (size_t batch_size = 6; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X5, inplace) {
   for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X5, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13552,10 +13562,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X5, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13563,60 +13573,61 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X5, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 25; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x5), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
+
 TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_eq_6) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(6)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_div_6) {
   for (size_t batch_size = 12; batch_size < 60; batch_size += 6) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_lt_6) {
   for (size_t batch_size = 1; batch_size < 6; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X6, batch_gt_6) {
   for (size_t batch_size = 7; batch_size < 12; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X6, inplace) {
   for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VELU__SCALAR_RR2_P6_X6, prescale) {
   for (float prescale : std::vector<float>({0.1f, 10.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .prescale(prescale)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13624,10 +13635,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X6, alpha) {
   for (float alpha : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .alpha(alpha)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
@@ -13635,10 +13646,10 @@
 TEST(F32_VELU__SCALAR_RR2_P6_X6, beta) {
   for (float beta : std::vector<float>({0.3f, 3.0f})) {
     for (size_t batch_size = 1; batch_size <= 30; batch_size += 5) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .beta(beta)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnOpMicrokernelTester::OpType::ELU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_velu_ukernel__scalar_rr2_p6_x6), VUnaryMicrokernelTester::OpType::ELU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
-}
\ No newline at end of file
+}
diff --git a/test/f32-vhswish.cc b/test/f32-vhswish.cc
index fabea75..dd53446 100644
--- a/test/f32-vhswish.cc
+++ b/test/f32-vhswish.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VHSWISH__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VHSWISH__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VHSWISH__NEON_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__NEON_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__NEON_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__neon_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__FMA3_X8, batch_eq_8) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__FMA3_X8, batch_div_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X8, batch_lt_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X8, batch_gt_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X8, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__FMA3_X16, batch_eq_16) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__FMA3_X16, batch_div_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X16, batch_lt_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X16, batch_gt_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__FMA3_X16, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__fma3_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VHSWISH__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -536,41 +536,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASMSIMD_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -578,41 +578,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASMSIMD_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -620,41 +620,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASMSIMD_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASMSIMD_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -662,25 +662,25 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASM_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASM_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -688,41 +688,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASM_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASM_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -730,145 +730,145 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VHSWISH__WASM_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::HardSwish);
   }
 
   TEST(F32_VHSWISH__WASM_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 
   TEST(F32_VHSWISH__WASM_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::HardSwish);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::HardSwish);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VHSWISH__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VHSWISH__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VHSWISH__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VHSWISH__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VHSWISH__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VHSWISH__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VHSWISH__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::HardSwish, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vhswish_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::HardSwish, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vlrelu.cc b/test/f32-vlrelu.cc
index 20731db..ebbe5b2 100644
--- a/test/f32-vlrelu.cc
+++ b/test/f32-vlrelu.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VLRELU__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -66,10 +66,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -79,45 +79,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VLRELU__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -125,10 +125,10 @@
     TEST_REQUIRES_ARM_NEON;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -138,45 +138,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -184,10 +184,10 @@
     TEST_REQUIRES_X86_SSE;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -197,45 +197,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -243,10 +243,10 @@
     TEST_REQUIRES_X86_SSE;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -256,45 +256,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE2_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE2_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -302,10 +302,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -315,45 +315,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE2_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE2_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -361,10 +361,10 @@
     TEST_REQUIRES_X86_SSE2;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -374,45 +374,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE41_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE41_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -420,10 +420,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -433,45 +433,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__SSE41_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__SSE41_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__SSE41_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -479,10 +479,10 @@
     TEST_REQUIRES_X86_SSE41;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -492,45 +492,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -538,10 +538,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -551,45 +551,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -597,10 +597,10 @@
     TEST_REQUIRES_X86_AVX;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -610,45 +610,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -656,10 +656,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -669,45 +669,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VLRELU__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
@@ -715,10 +715,10 @@
     TEST_REQUIRES_X86_AVX512F;
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -727,51 +727,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X4, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -780,51 +780,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_BITSELECT_X8, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_bitselect_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -833,51 +833,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X4, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -886,51 +886,51 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASMSIMD_MINMAX_X8, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasmsimd_minmax_x8), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -939,35 +939,35 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASM_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASM_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X1, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -976,51 +976,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASM_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASM_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X2, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -1029,51 +1029,51 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VLRELU__WASM_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
   }
 
   TEST(F32_VLRELU__WASM_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
     }
   }
 
   TEST(F32_VLRELU__WASM_X4, slope) {
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
-          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::LeakyReLU);
+          .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::LeakyReLU);
       }
     }
   }
@@ -1081,137 +1081,135 @@
 
 
 TEST(F32_VLRELU__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VLRELU__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X1, slope) {
   for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .slope(slope)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
-
 TEST(F32_VLRELU__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VLRELU__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X2, slope) {
   for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .slope(slope)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
 }
 
-
 TEST(F32_VLRELU__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VLRELU__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VLRELU__SCALAR_X4, slope) {
   for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .slope(slope)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::LeakyReLU, VUnOpMicrokernelTester::Variant::Scalar);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vlrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::LeakyReLU, VUnaryMicrokernelTester::Variant::Scalar);
     }
   }
-}
+}
\ No newline at end of file
diff --git a/test/f32-vneg.cc b/test/f32-vneg.cc
index 554bbd9..400fb55 100644
--- a/test/f32-vneg.cc
+++ b/test/f32-vneg.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VNEG__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VNEG__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VNEG__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -395,41 +395,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VNEG__WASMSIMD_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__WASMSIMD_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -437,145 +437,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VNEG__WASMSIMD_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Negate);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Negate);
   }
 
   TEST(F32_VNEG__WASMSIMD_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 
   TEST(F32_VNEG__WASMSIMD_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Negate);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Negate);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VNEG__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VNEG__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VNEG__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VNEG__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VNEG__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VNEG__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VNEG__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Negate, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vneg_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Negate, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vrelu.cc b/test/f32-vrelu.cc
index b1edabc..792278d 100644
--- a/test/f32-vrelu.cc
+++ b/test/f32-vrelu.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRELU__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRELU__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,215 +349,215 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRELU__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
 
 
 TEST(F32_VRELU__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRELU__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRELU__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRELU__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRELU__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRELU__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRELU__SCALAR_X8, batch_eq_8) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(8)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRELU__SCALAR_X8, batch_div_8) {
   for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X8, batch_lt_8) {
   for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X8, batch_gt_8) {
   for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRELU__SCALAR_X8, inplace) {
   for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnOpMicrokernelTester::OpType::ReLU, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__scalar_x8), VUnaryMicrokernelTester::OpType::ReLU, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x1), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -565,41 +565,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -607,41 +607,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -649,41 +649,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -691,41 +691,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASMSIMD_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASMSIMD_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -733,41 +733,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASMSIMD_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASMSIMD_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -775,41 +775,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASMSIMD_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASMSIMD_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASMSIMD_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasmsimd_x16), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -817,25 +817,25 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM32_SHR_X1, batch_eq_1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(1)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM32_SHR_X1, batch_gt_1) {
     for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X1, inplace) {
     for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x1), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -843,41 +843,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM32_SHR_X2, batch_eq_2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(2)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM32_SHR_X2, batch_div_2) {
     for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X2, batch_lt_2) {
     for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X2, batch_gt_2) {
     for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X2, inplace) {
     for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x2), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
@@ -885,41 +885,41 @@
 
 #if XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
   TEST(F32_VRELU__WASM32_SHR_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnOpMicrokernelTester::OpType::ReLU);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnaryMicrokernelTester::OpType::ReLU);
   }
 
   TEST(F32_VRELU__WASM32_SHR_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 
   TEST(F32_VRELU__WASM32_SHR_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnOpMicrokernelTester::OpType::ReLU);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrelu_ukernel__wasm32_shr_x4), VUnaryMicrokernelTester::OpType::ReLU);
     }
   }
 #endif  // XNN_ARCH_WASM || XNN_ARCH_WASMSIMD
diff --git a/test/f32-vrndd.cc b/test/f32-vrndd.cc
index 860a06a..55d42e3 100644
--- a/test/f32-vrndd.cc
+++ b/test/f32-vrndd.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDD__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDD__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDD__NEONV8_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__NEONV8_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDD__NEONV8_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__NEONV8_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__NEONV8_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__SSE2_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__SSE2_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__SSE2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__SSE2_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE2_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__SSE41_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__SSE41_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__SSE41_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__SSE41_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__SSE41_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDD__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -583,41 +583,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -625,41 +625,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_ADDSUB_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -667,41 +667,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDD__WASMSIMD_CVT_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -709,145 +709,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDD__WASMSIMD_CVT_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundDown);
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 
   TEST(F32_VRNDD__WASMSIMD_CVT_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundDown);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundDown);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VRNDD__SCALAR_LIBM_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDD__SCALAR_LIBM_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDD__SCALAR_LIBM_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDD__SCALAR_LIBM_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundDown, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndd_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundDown, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vrndne.cc b/test/f32-vrndne.cc
index 65f50f5..d845f78 100644
--- a/test/f32-vrndne.cc
+++ b/test/f32-vrndne.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDNE__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDNE__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDNE__NEONV8_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__NEONV8_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDNE__NEONV8_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__NEONV8_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__NEONV8_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__SSE2_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__SSE2_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__SSE2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__SSE2_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE2_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__SSE41_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__SSE41_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__SSE41_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__SSE41_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__SSE41_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDNE__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -583,41 +583,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -625,145 +625,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 
   TEST(F32_VRNDNE__WASMSIMD_ADDSUB_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundToNearestEven);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundToNearestEven);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDNE__SCALAR_LIBM_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundToNearestEven, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndne_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundToNearestEven, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vrndu.cc b/test/f32-vrndu.cc
index 9faf40d..0f97659 100644
--- a/test/f32-vrndu.cc
+++ b/test/f32-vrndu.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDU__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDU__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDU__NEONV8_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__NEONV8_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDU__NEONV8_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__NEONV8_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__NEONV8_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__SSE2_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__SSE2_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__SSE2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__SSE2_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE2_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__SSE41_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__SSE41_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__SSE41_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__SSE41_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__SSE41_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDU__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -583,41 +583,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -625,41 +625,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_ADDSUB_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -667,41 +667,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDU__WASMSIMD_CVT_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -709,145 +709,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDU__WASMSIMD_CVT_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundUp);
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 
   TEST(F32_VRNDU__WASMSIMD_CVT_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundUp);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundUp);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VRNDU__SCALAR_LIBM_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDU__SCALAR_LIBM_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDU__SCALAR_LIBM_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDU__SCALAR_LIBM_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundUp, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndu_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundUp, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vrndz.cc b/test/f32-vrndz.cc
index 381dc2c..3113a78 100644
--- a/test/f32-vrndz.cc
+++ b/test/f32-vrndz.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDZ__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDZ__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDZ__NEONV8_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__NEONV8_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VRNDZ__NEONV8_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_V8;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__NEONV8_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__NEONV8_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_V8;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__neonv8_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__SSE2_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__SSE2_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__SSE2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__SSE2_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE2_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse2_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__SSE41_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__SSE41_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__SSE41_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__SSE41_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__SSE41_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__sse41_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VRNDZ__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -583,41 +583,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -625,41 +625,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_ADDSUB_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_addsub_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -667,41 +667,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDZ__WASMSIMD_CVT_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -709,145 +709,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VRNDZ__WASMSIMD_CVT_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 
   TEST(F32_VRNDZ__WASMSIMD_CVT_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnOpMicrokernelTester::OpType::RoundTowardsZero);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__wasmsimd_cvt_x8), VUnaryMicrokernelTester::OpType::RoundTowardsZero);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x1), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x2), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VRNDZ__SCALAR_LIBM_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnOpMicrokernelTester::OpType::RoundTowardsZero, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vrndz_ukernel__scalar_libm_x4), VUnaryMicrokernelTester::OpType::RoundTowardsZero, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vsigmoid.cc b/test/f32-vsigmoid.cc
index 8431e15..a0bdf88 100644
--- a/test/f32-vsigmoid.cc
+++ b/test/f32-vsigmoid.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_DIV_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -584,45 +584,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -631,45 +631,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -678,45 +678,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -725,45 +725,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -772,45 +772,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -819,45 +819,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR1RECPS1FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -866,45 +866,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -913,45 +913,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -960,45 +960,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1007,45 +1007,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1054,45 +1054,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1101,45 +1101,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_P5_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1148,45 +1148,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1195,45 +1195,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1242,45 +1242,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1289,45 +1289,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1336,45 +1336,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1383,45 +1383,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_P5_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_p5_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1430,45 +1430,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1477,45 +1477,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1524,45 +1524,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1571,45 +1571,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1618,45 +1618,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1665,45 +1665,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_DIV_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -1712,45 +1712,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1759,45 +1759,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1806,45 +1806,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1853,45 +1853,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1900,45 +1900,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1947,45 +1947,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1994,45 +1994,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2041,45 +2041,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2088,45 +2088,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2135,45 +2135,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2182,45 +2182,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2229,45 +2229,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR1RECPS1FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2276,45 +2276,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2323,45 +2323,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2370,45 +2370,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2417,45 +2417,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2464,45 +2464,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2511,45 +2511,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT64_P2_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2558,45 +2558,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2605,45 +2605,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2652,45 +2652,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2699,45 +2699,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2746,45 +2746,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2793,45 +2793,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT64_P2_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut64_p2_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -2840,45 +2840,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -2887,45 +2887,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -2934,45 +2934,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -2981,45 +2981,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -3028,45 +3028,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -3075,45 +3075,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_DIV_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -3122,45 +3122,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3169,45 +3169,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3216,45 +3216,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3263,45 +3263,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3310,45 +3310,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3357,45 +3357,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3404,45 +3404,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3451,45 +3451,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3498,45 +3498,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3545,45 +3545,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3592,45 +3592,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3639,45 +3639,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR1RECPS1FMA_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr1recps1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3686,45 +3686,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3733,45 +3733,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3780,45 +3780,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3827,45 +3827,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3874,45 +3874,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3921,45 +3921,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEONFMA_RR1_LUT2048_P1_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neonfma_rr1_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -3968,45 +3968,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4015,45 +4015,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4062,45 +4062,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X12, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4109,45 +4109,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X16, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4156,45 +4156,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X20, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4203,45 +4203,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__NEON_RR2_LUT2048_P1_NR2RECPS_X24, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__neon_rr2_lut2048_p1_nr2recps_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -4250,45 +4250,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4297,45 +4297,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4344,45 +4344,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X12, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4391,45 +4391,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X16, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4438,45 +4438,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X20, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4485,45 +4485,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_P5_DIV_X24, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4532,45 +4532,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4579,45 +4579,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4626,45 +4626,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X12, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4673,45 +4673,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X16, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4720,45 +4720,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X20, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4767,45 +4767,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_P5_DIV_X24, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4814,45 +4814,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X4, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4861,45 +4861,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X8, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4908,45 +4908,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X12, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -4955,45 +4955,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X16, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5002,45 +5002,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X20, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5049,45 +5049,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE2_LUT64_P2_DIV_X24, inplace) {
     TEST_REQUIRES_X86_SSE2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse2_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5096,45 +5096,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X4, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5143,45 +5143,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X8, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5190,45 +5190,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X12, batch_eq_12) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X12, batch_div_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X12, batch_lt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X12, batch_gt_12) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X12, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5237,45 +5237,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X16, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5284,45 +5284,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X20, batch_eq_20) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X20, batch_div_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X20, batch_lt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X20, batch_gt_20) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X20, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5331,45 +5331,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_SSE41;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__SSE41_LUT64_P2_DIV_X24, inplace) {
     TEST_REQUIRES_X86_SSE41;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__sse41_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5378,45 +5378,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5425,45 +5425,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5472,45 +5472,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X24, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5519,45 +5519,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X32, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5566,45 +5566,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X40, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5613,45 +5613,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X48, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5660,45 +5660,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X56, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5707,45 +5707,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X64, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5754,45 +5754,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X72, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5801,45 +5801,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_DIV_X80, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5848,45 +5848,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5895,45 +5895,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5942,45 +5942,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X24, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -5989,45 +5989,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X32, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6036,45 +6036,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X40, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6083,45 +6083,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X48, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6130,45 +6130,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X56, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6177,45 +6177,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X64, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6224,45 +6224,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X72, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6271,45 +6271,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX_RR2_P5_NR2_X80, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx_rr2_p5_nr2_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6318,45 +6318,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6365,45 +6365,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6412,45 +6412,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6459,45 +6459,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6506,45 +6506,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6553,45 +6553,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6600,45 +6600,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6647,45 +6647,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6694,45 +6694,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6741,45 +6741,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_DIV_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6788,45 +6788,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6835,45 +6835,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6882,45 +6882,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6929,45 +6929,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -6976,45 +6976,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7023,45 +7023,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7070,45 +7070,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7117,45 +7117,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7164,45 +7164,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7211,45 +7211,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR1FMA_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7258,45 +7258,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X8, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7305,45 +7305,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X16, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7352,45 +7352,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_eq_24) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_div_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_lt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X24, batch_gt_24) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X24, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7399,45 +7399,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X32, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7446,45 +7446,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_eq_40) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_div_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_lt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X40, batch_gt_40) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X40, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x40), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7493,45 +7493,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X48, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7540,45 +7540,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_eq_56) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_div_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_lt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X56, batch_gt_56) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X56, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x56), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7587,45 +7587,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X64, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7634,45 +7634,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_eq_72) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(72)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_div_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 144; batch_size < 720; batch_size += 72) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_lt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X72, batch_gt_72) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 73; batch_size < 144; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X72, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 360; batch_size += 71) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x72), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7681,45 +7681,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX2;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX2_RR1_P5_NR2FMA_X80, inplace) {
     TEST_REQUIRES_X86_AVX2;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx2_rr1_p5_nr2fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7728,45 +7728,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7775,45 +7775,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7822,45 +7822,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7869,45 +7869,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7916,45 +7916,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -7963,45 +7963,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8010,45 +8010,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8057,45 +8057,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_DIV_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8104,45 +8104,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8151,45 +8151,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8198,45 +8198,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8245,45 +8245,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8292,45 +8292,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8339,45 +8339,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8386,45 +8386,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8433,45 +8433,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_P5_SCALEF_NR1FMA_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_p5_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8480,45 +8480,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8527,45 +8527,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8574,45 +8574,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8621,45 +8621,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8668,45 +8668,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8715,45 +8715,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8762,45 +8762,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8809,45 +8809,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_DIV_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8856,45 +8856,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8903,45 +8903,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8950,45 +8950,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -8997,45 +8997,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9044,45 +9044,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9091,45 +9091,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9138,45 +9138,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9185,45 +9185,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR1_LUT16_P3_PERM_SCALEF_NR1FMA_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr1_lut16_p3_perm_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9232,45 +9232,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9279,45 +9279,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9326,45 +9326,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9373,45 +9373,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9420,45 +9420,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9467,45 +9467,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9514,45 +9514,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9561,45 +9561,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_DIV_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_div_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9608,45 +9608,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9655,45 +9655,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x32), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9702,45 +9702,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x48), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9749,45 +9749,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x64), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9796,45 +9796,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x80), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9843,45 +9843,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x96), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9890,45 +9890,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x112), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9937,45 +9937,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__AVX512F_RR2_LUT32_P2_PERM2_SCALEF_NR1FMA_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__avx512f_rr2_lut32_p2_perm2_scalef_nr1fma_x128), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -9983,41 +9983,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10025,41 +10025,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10067,41 +10067,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10109,41 +10109,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10151,41 +10151,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10193,41 +10193,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_P5_DIV_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_p5_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10235,41 +10235,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10277,41 +10277,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x8), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10319,41 +10319,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_eq_12) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_div_12) {
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_lt_12) {
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X12, batch_gt_12) {
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X12, inplace) {
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x12), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10361,41 +10361,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_eq_16) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_div_16) {
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_lt_16) {
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X16, batch_gt_16) {
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X16, inplace) {
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x16), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10403,41 +10403,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_eq_20) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_div_20) {
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_lt_20) {
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X20, batch_gt_20) {
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X20, inplace) {
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x20), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -10445,353 +10445,353 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_eq_24) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_div_24) {
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_lt_24) {
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X24, batch_gt_24) {
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 
   TEST(F32_VSIGMOID__WASMSIMD_LUT64_P2_DIV_X24, inplace) {
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnOpMicrokernelTester::OpType::Sigmoid);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__wasmsimd_lut64_p2_div_x24), VUnaryMicrokernelTester::OpType::Sigmoid);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT2048_P1_DIV_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut2048_p1_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_LUT64_P2_DIV_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_lut64_p2_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x1), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x2), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSIGMOID__SCALAR_P5_DIV_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnOpMicrokernelTester::OpType::Sigmoid, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsigmoid_ukernel__scalar_p5_div_x4), VUnaryMicrokernelTester::OpType::Sigmoid, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vsqr.cc b/test/f32-vsqr.cc
index 2ca6afd..d5dc704 100644
--- a/test/f32-vsqr.cc
+++ b/test/f32-vsqr.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQR__NEON_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__NEON_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQR__NEON_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__NEON_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__NEON_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__neon_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__SSE_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__SSE_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__SSE_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__SSE_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__SSE_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__sse_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__AVX_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__AVX_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__AVX_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__AVX_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__AVX512F_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__AVX512F_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x16), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQR__AVX512F_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__AVX512F_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__AVX512F_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__avx512f_x32), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -395,41 +395,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSQR__WASMSIMD_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__WASMSIMD_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x4), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -437,145 +437,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSQR__WASMSIMD_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Square);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Square);
   }
 
   TEST(F32_VSQR__WASMSIMD_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 
   TEST(F32_VSQR__WASMSIMD_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnOpMicrokernelTester::OpType::Square);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__wasmsimd_x8), VUnaryMicrokernelTester::OpType::Square);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VSQR__SCALAR_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQR__SCALAR_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x1), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSQR__SCALAR_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQR__SCALAR_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x2), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSQR__SCALAR_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQR__SCALAR_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQR__SCALAR_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnOpMicrokernelTester::OpType::Square, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqr_ukernel__scalar_x4), VUnaryMicrokernelTester::OpType::Square, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/f32-vsqrt.cc b/test/f32-vsqrt.cc
index 9c016d5..23f1366 100644
--- a/test/f32-vsqrt.cc
+++ b/test/f32-vsqrt.cc
@@ -20,45 +20,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEON_SQRT_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X4, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -67,45 +67,45 @@
 #if XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEON_SQRT_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEON_SQRT_X8, inplace) {
     TEST_REQUIRES_ARM_NEON;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neon_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM64
@@ -114,45 +114,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -161,45 +161,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -208,45 +208,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -255,45 +255,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -302,45 +302,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -349,45 +349,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -396,45 +396,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X28, batch_eq_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(28)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X28, batch_div_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 56; batch_size < 280; batch_size += 28) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X28, batch_lt_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 28; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X28, batch_gt_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 29; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X28, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 140; batch_size += 27) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -443,45 +443,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X32, batch_eq_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X32, batch_div_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X32, batch_lt_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X32, batch_gt_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X32, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -490,45 +490,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X36, batch_eq_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(36)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X36, batch_div_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 72; batch_size < 360; batch_size += 36) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X36, batch_lt_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 36; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X36, batch_gt_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 37; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X36, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 180; batch_size += 35) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -537,45 +537,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X40, batch_eq_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X40, batch_div_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X40, batch_lt_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X40, batch_gt_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR1RSQRTS1FMA1ADJ_X40, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr1rsqrts1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -584,45 +584,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X4, batch_eq_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X4, batch_div_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X4, batch_lt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X4, batch_gt_4) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X4, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -631,45 +631,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X8, batch_eq_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X8, batch_div_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X8, batch_lt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X8, batch_gt_8) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X8, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -678,45 +678,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X12, batch_eq_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(12)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X12, batch_div_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 24; batch_size < 120; batch_size += 12) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X12, batch_lt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 12; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X12, batch_gt_12) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 13; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X12, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 60; batch_size += 11) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x12), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -725,45 +725,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X16, batch_eq_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X16, batch_div_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X16, batch_lt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X16, batch_gt_16) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X16, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -772,45 +772,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X20, batch_eq_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(20)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X20, batch_div_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 40; batch_size < 200; batch_size += 20) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X20, batch_lt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 20; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X20, batch_gt_20) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 21; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X20, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 100; batch_size += 19) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x20), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -819,45 +819,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X24, batch_eq_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X24, batch_div_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X24, batch_lt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X24, batch_gt_24) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X24, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -866,45 +866,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X28, batch_eq_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(28)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X28, batch_div_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 56; batch_size < 280; batch_size += 28) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X28, batch_lt_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 28; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X28, batch_gt_28) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 29; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X28, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 140; batch_size += 27) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x28), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -913,45 +913,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X32, batch_eq_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X32, batch_div_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X32, batch_lt_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X32, batch_gt_32) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X32, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -960,45 +960,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X36, batch_eq_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(36)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X36, batch_div_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 72; batch_size < 360; batch_size += 36) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X36, batch_lt_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 36; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X36, batch_gt_36) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 37; batch_size < 72; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X36, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 180; batch_size += 35) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x36), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1007,45 +1007,45 @@
 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X40, batch_eq_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X40, batch_div_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X40, batch_lt_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X40, batch_gt_40) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__NEONFMA_NR2FMA1ADJ_X40, inplace) {
     TEST_REQUIRES_ARM_NEON_FMA;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__neonfma_nr2fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
@@ -1054,45 +1054,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__SSE_SQRT_X4, batch_eq_4) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X4, batch_div_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X4, batch_lt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X4, batch_gt_4) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X4, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1101,45 +1101,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__SSE_SQRT_X8, batch_eq_8) {
     TEST_REQUIRES_X86_SSE;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X8, batch_div_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X8, batch_lt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X8, batch_gt_8) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__SSE_SQRT_X8, inplace) {
     TEST_REQUIRES_X86_SSE;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__sse_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1148,45 +1148,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX_SQRT_X8, batch_eq_8) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X8, batch_div_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X8, batch_lt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X8, batch_gt_8) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X8, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1195,45 +1195,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX_SQRT_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX_SQRT_X16, inplace) {
     TEST_REQUIRES_X86_AVX;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx_sqrt_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1242,45 +1242,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X8, batch_eq_8) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X8, batch_div_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X8, batch_lt_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X8, batch_gt_8) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X8, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1289,45 +1289,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X16, batch_eq_16) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X16, batch_div_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X16, batch_lt_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X16, batch_gt_16) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X16, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1336,45 +1336,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X24, batch_eq_24) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(24)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X24, batch_div_24) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 48; batch_size < 240; batch_size += 24) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X24, batch_lt_24) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 24; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X24, batch_gt_24) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 25; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X24, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 120; batch_size += 23) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x24), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1383,45 +1383,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X32, batch_eq_32) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X32, batch_div_32) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X32, batch_lt_32) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X32, batch_gt_32) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X32, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1430,45 +1430,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X40, batch_eq_40) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(40)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X40, batch_div_40) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 80; batch_size < 400; batch_size += 40) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X40, batch_lt_40) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 40; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X40, batch_gt_40) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 41; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X40, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 200; batch_size += 39) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x40), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1477,45 +1477,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X48, batch_eq_48) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X48, batch_div_48) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X48, batch_lt_48) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X48, batch_gt_48) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X48, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1524,45 +1524,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X56, batch_eq_56) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(56)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X56, batch_div_56) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 112; batch_size < 560; batch_size += 56) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X56, batch_lt_56) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 56; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X56, batch_gt_56) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 57; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X56, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 280; batch_size += 55) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x56), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1571,45 +1571,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X64, batch_eq_64) {
     TEST_REQUIRES_X86_FMA3;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X64, batch_div_64) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X64, batch_lt_64) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X64, batch_gt_64) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__FMA3_NR1FMA1ADJ_X64, inplace) {
     TEST_REQUIRES_X86_FMA3;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__fma3_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1618,45 +1618,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X16, batch_eq_16) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(16)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X16, batch_div_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 32; batch_size < 160; batch_size += 16) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X16, batch_lt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X16, batch_gt_16) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 17; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X16, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 80; batch_size += 15) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x16), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1665,45 +1665,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X32, batch_eq_32) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(32)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X32, batch_div_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 64; batch_size < 320; batch_size += 32) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X32, batch_lt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 32; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X32, batch_gt_32) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 33; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X32, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 160; batch_size += 31) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x32), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1712,45 +1712,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X48, batch_eq_48) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(48)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X48, batch_div_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 96; batch_size < 480; batch_size += 48) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X48, batch_lt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 48; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X48, batch_gt_48) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 49; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X48, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 240; batch_size += 47) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x48), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1759,45 +1759,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X64, batch_eq_64) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(64)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X64, batch_div_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 128; batch_size < 640; batch_size += 64) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X64, batch_lt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 64; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X64, batch_gt_64) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 65; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X64, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 320; batch_size += 63) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x64), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1806,45 +1806,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X80, batch_eq_80) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(80)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X80, batch_div_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 160; batch_size < 800; batch_size += 80) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X80, batch_lt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 80; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X80, batch_gt_80) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 81; batch_size < 160; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X80, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 400; batch_size += 79) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x80), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1853,45 +1853,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X96, batch_eq_96) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(96)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X96, batch_div_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 192; batch_size < 960; batch_size += 96) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X96, batch_lt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 96; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X96, batch_gt_96) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 97; batch_size < 192; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X96, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 480; batch_size += 95) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x96), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1900,45 +1900,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X112, batch_eq_112) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(112)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X112, batch_div_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 224; batch_size < 1120; batch_size += 112) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X112, batch_lt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 112; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X112, batch_gt_112) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 113; batch_size < 224; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X112, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 560; batch_size += 111) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x112), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1947,45 +1947,45 @@
 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X128, batch_eq_128) {
     TEST_REQUIRES_X86_AVX512F;
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(128)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X128, batch_div_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 256; batch_size < 1280; batch_size += 128) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X128, batch_lt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size < 128; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X128, batch_gt_128) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 129; batch_size < 256; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__AVX512F_NR1FMA1ADJ_X128, inplace) {
     TEST_REQUIRES_X86_AVX512F;
     for (size_t batch_size = 1; batch_size <= 640; batch_size += 127) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__avx512f_nr1fma1adj_x128), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
@@ -1993,41 +1993,41 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSQRT__WASMSIMD_SQRT_X4, batch_eq_4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(4)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X4, batch_div_4) {
     for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X4, batch_lt_4) {
     for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X4, batch_gt_4) {
     for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X4, inplace) {
     for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
@@ -2035,145 +2035,145 @@
 
 #if XNN_ARCH_WASMSIMD
   TEST(F32_VSQRT__WASMSIMD_SQRT_X8, batch_eq_8) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(8)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X8, batch_div_8) {
     for (size_t batch_size = 16; batch_size < 80; batch_size += 8) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X8, batch_lt_8) {
     for (size_t batch_size = 1; batch_size < 8; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X8, batch_gt_8) {
     for (size_t batch_size = 9; batch_size < 16; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 
   TEST(F32_VSQRT__WASMSIMD_SQRT_X8, inplace) {
     for (size_t batch_size = 1; batch_size <= 40; batch_size += 7) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .inplace(true)
-        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnOpMicrokernelTester::OpType::SquareRoot);
+        .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__wasmsimd_sqrt_x8), VUnaryMicrokernelTester::OpType::SquareRoot);
     }
   }
 #endif  // XNN_ARCH_WASMSIMD
 
 
 TEST(F32_VSQRT__SCALAR_SQRT_X1, batch_eq_1) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(1)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X1, batch_gt_1) {
   for (size_t batch_size = 2; batch_size < 10; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X1, inplace) {
   for (size_t batch_size = 1; batch_size <= 5; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x1), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSQRT__SCALAR_SQRT_X2, batch_eq_2) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(2)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X2, batch_div_2) {
   for (size_t batch_size = 4; batch_size < 20; batch_size += 2) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X2, batch_lt_2) {
   for (size_t batch_size = 1; batch_size < 2; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X2, batch_gt_2) {
   for (size_t batch_size = 3; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X2, inplace) {
   for (size_t batch_size = 1; batch_size <= 10; batch_size += 1) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x2), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 
 TEST(F32_VSQRT__SCALAR_SQRT_X4, batch_eq_4) {
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(4)
-    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+    .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X4, batch_div_4) {
   for (size_t batch_size = 8; batch_size < 40; batch_size += 4) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X4, batch_lt_4) {
   for (size_t batch_size = 1; batch_size < 4; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X4, batch_gt_4) {
   for (size_t batch_size = 5; batch_size < 8; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
 
 TEST(F32_VSQRT__SCALAR_SQRT_X4, inplace) {
   for (size_t batch_size = 1; batch_size <= 20; batch_size += 3) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
-      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnOpMicrokernelTester::OpType::SquareRoot, VUnOpMicrokernelTester::Variant::Scalar);
+      .Test(xnn_f32_vunary_ukernel_function(xnn_f32_vsqrt_ukernel__scalar_sqrt_x4), VUnaryMicrokernelTester::OpType::SquareRoot, VUnaryMicrokernelTester::Variant::Scalar);
   }
 }
diff --git a/test/vunary-microkernel-tester.h b/test/vunary-microkernel-tester.h
index b198573..7a39feb 100644
--- a/test/vunary-microkernel-tester.h
+++ b/test/vunary-microkernel-tester.h
@@ -20,7 +20,7 @@
 #include <xnnpack/params.h>
 
 
-class VUnOpMicrokernelTester {
+class VUnaryMicrokernelTester {
  public:
   enum class OpType {
     Abs,
@@ -44,7 +44,7 @@
     Scalar,
   };
 
-  inline VUnOpMicrokernelTester& batch_size(size_t batch_size) {
+  inline VUnaryMicrokernelTester& batch_size(size_t batch_size) {
     assert(batch_size != 0);
     this->batch_size_ = batch_size;
     return *this;
@@ -54,7 +54,7 @@
     return this->batch_size_;
   }
 
-  inline VUnOpMicrokernelTester& inplace(bool inplace) {
+  inline VUnaryMicrokernelTester& inplace(bool inplace) {
     this->inplace_ = inplace;
     return *this;
   }
@@ -63,7 +63,7 @@
     return this->inplace_;
   }
 
-  inline VUnOpMicrokernelTester& slope(float slope) {
+  inline VUnaryMicrokernelTester& slope(float slope) {
     this->slope_ = slope;
     return *this;
   }
@@ -72,7 +72,7 @@
     return this->slope_;
   }
 
-  inline VUnOpMicrokernelTester& prescale(float prescale) {
+  inline VUnaryMicrokernelTester& prescale(float prescale) {
     this->prescale_ = prescale;
     return *this;
   }
@@ -81,7 +81,7 @@
     return this->prescale_;
   }
 
-  inline VUnOpMicrokernelTester& alpha(float alpha) {
+  inline VUnaryMicrokernelTester& alpha(float alpha) {
     this->alpha_ = alpha;
     return *this;
   }
@@ -90,7 +90,7 @@
     return this->alpha_;
   }
 
-  inline VUnOpMicrokernelTester& beta(float beta) {
+  inline VUnaryMicrokernelTester& beta(float beta) {
     this->beta_ = beta;
     return *this;
   }
@@ -99,7 +99,7 @@
     return this->beta_;
   }
 
-  inline VUnOpMicrokernelTester& qmin(uint8_t qmin) {
+  inline VUnaryMicrokernelTester& qmin(uint8_t qmin) {
     this->qmin_ = qmin;
     return *this;
   }
@@ -108,7 +108,7 @@
     return this->qmin_;
   }
 
-  inline VUnOpMicrokernelTester& qmax(uint8_t qmax) {
+  inline VUnaryMicrokernelTester& qmax(uint8_t qmax) {
     this->qmax_ = qmax;
     return *this;
   }
@@ -117,7 +117,7 @@
     return this->qmax_;
   }
 
-  inline VUnOpMicrokernelTester& iterations(size_t iterations) {
+  inline VUnaryMicrokernelTester& iterations(size_t iterations) {
     this->iterations_ = iterations;
     return *this;
   }
diff --git a/tools/generate-vunary-test.py b/tools/generate-vunary-test.py
index 796620a..7e3eef6 100755
--- a/tools/generate-vunary-test.py
+++ b/tools/generate-vunary-test.py
@@ -56,7 +56,7 @@
 TEST(${TEST_NAME}, batch_eq_${BATCH_TILE}) {
   $if ISA_CHECK:
     ${ISA_CHECK};
-  VUnOpMicrokernelTester()
+  VUnaryMicrokernelTester()
     .batch_size(${BATCH_TILE})
     .Test(${", ".join(TEST_ARGS)});
 }
@@ -66,7 +66,7 @@
     $if ISA_CHECK:
       ${ISA_CHECK};
     for (size_t batch_size = ${BATCH_TILE*2}; batch_size < ${BATCH_TILE*10}; batch_size += ${BATCH_TILE}) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .Test(${", ".join(TEST_ARGS)});
     }
@@ -76,7 +76,7 @@
     $if ISA_CHECK:
       ${ISA_CHECK};
     for (size_t batch_size = 1; batch_size < ${BATCH_TILE}; batch_size++) {
-      VUnOpMicrokernelTester()
+      VUnaryMicrokernelTester()
         .batch_size(batch_size)
         .Test(${", ".join(TEST_ARGS)});
     }
@@ -86,7 +86,7 @@
   $if ISA_CHECK:
     ${ISA_CHECK};
   for (size_t batch_size = ${BATCH_TILE+1}; batch_size < ${10 if BATCH_TILE == 1 else BATCH_TILE*2}; batch_size++) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .Test(${", ".join(TEST_ARGS)});
   }
@@ -96,7 +96,7 @@
   $if ISA_CHECK:
     ${ISA_CHECK};
   for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-    VUnOpMicrokernelTester()
+    VUnaryMicrokernelTester()
       .batch_size(batch_size)
       .inplace(true)
       .Test(${", ".join(TEST_ARGS)});
@@ -109,7 +109,7 @@
       ${ISA_CHECK};
     for (uint8_t qmin = 1; qmin < 255; qmin++) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmin(qmin)
           .Test(${", ".join(TEST_ARGS)});
@@ -122,7 +122,7 @@
       ${ISA_CHECK};
     for (uint8_t qmax = 1; qmax < 255; qmax++) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .qmax(qmax)
           .Test(${", ".join(TEST_ARGS)});
@@ -136,7 +136,7 @@
       ${ISA_CHECK};
     for (float prescale : std::vector<float>({0.1f, 10.0f})) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .prescale(prescale)
           .Test(${", ".join(TEST_ARGS)});
@@ -149,7 +149,7 @@
       ${ISA_CHECK};
     for (float alpha : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .alpha(alpha)
           .Test(${", ".join(TEST_ARGS)});
@@ -162,7 +162,7 @@
       ${ISA_CHECK};
     for (float beta : std::vector<float>({0.3f, 3.0f})) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .beta(beta)
           .Test(${", ".join(TEST_ARGS)});
@@ -176,7 +176,7 @@
       ${ISA_CHECK};
     for (float slope : std::vector<float>({-0.7f, 0.3f, 1.3f})) {
       for (size_t batch_size = 1; batch_size <= ${BATCH_TILE*5}; batch_size += ${max(1, BATCH_TILE-1)}) {
-        VUnOpMicrokernelTester()
+        VUnaryMicrokernelTester()
           .batch_size(batch_size)
           .slope(slope)
           .Test(${", ".join(TEST_ARGS)});
@@ -204,10 +204,10 @@
   _, datatype, _ = ukernel.split("_", 2)
   test_args = [
     "xnn_f32_vunary_ukernel_function(%s)" % ukernel,
-    "VUnOpMicrokernelTester::OpType::%s" % op_type,
+    "VUnaryMicrokernelTester::OpType::%s" % op_type,
   ]
   if not isa:
-    test_args.append("VUnOpMicrokernelTester::Variant::Scalar")
+    test_args.append("VUnaryMicrokernelTester::Variant::Scalar")
   return xngen.preprocess(BINOP_TEST_TEMPLATE, {
       "TEST_NAME": test_name.upper().replace("UKERNEL_", ""),
       "TEST_ARGS": test_args,