Auto-switch to LINEAR GEMM/IGEMM/DWCONV micro-kernels

- Initialize pointers to LINEAR-activation micro-kernels on WebAssembly
- Automatically detect and use LINEAR-activation micro-kernels
- Update unit tests to test both MINMAX- and LINEAR-activation micro-kernels

PiperOrigin-RevId: 305792844
diff --git a/test/fully-connected-operator-tester.h b/test/fully-connected-operator-tester.h
index d28a18d..cfc3738 100644
--- a/test/fully-connected-operator-tester.h
+++ b/test/fully-connected-operator-tester.h
@@ -295,8 +295,10 @@
       const float accumulated_min = *std::min_element(output_ref.cbegin(), output_ref.cend());
       const float accumulated_max = *std::max_element(output_ref.cbegin(), output_ref.cend());
 
-      const float output_min = accumulated_min + (accumulated_max - accumulated_min) / 255.0f * float(qmin());
-      const float output_max = accumulated_max - (accumulated_max - accumulated_min) / 255.0f * float(255 - qmax());
+      const float output_min = qmin() == 0 ? -std::numeric_limits<float>::infinity() :
+        accumulated_min + (accumulated_max - accumulated_min) / 255.0f * float(qmin());
+      const float output_max = qmax() == 255 ? std::numeric_limits<float>::infinity() :
+        accumulated_max - (accumulated_max - accumulated_min) / 255.0f * float(255 - qmax());
 
       // Clamp reference results.
       for (float& value : output_ref) {