QC8 NHWC Convolution operator

- xnn_create_convolution2d_nhwc_qc8 and xnn_setup_convolution2d_nhwc_qc8 APIs
- Unit tests

PiperOrigin-RevId: 380283916
diff --git a/include/xnnpack.h b/include/xnnpack.h
index fc42240..9ad87c4 100644
--- a/include/xnnpack.h
+++ b/include/xnnpack.h
@@ -1935,6 +1935,47 @@
 
 #endif  // XNN_NO_F16_OPERATORS
 
+#ifndef XNN_NO_QC8_OPERATORS
+
+enum xnn_status xnn_create_convolution2d_nhwc_qc8(
+  uint32_t input_padding_top,
+  uint32_t input_padding_right,
+  uint32_t input_padding_bottom,
+  uint32_t input_padding_left,
+  uint32_t kernel_height,
+  uint32_t kernel_width,
+  uint32_t subsampling_height,
+  uint32_t subsampling_width,
+  uint32_t dilation_height,
+  uint32_t dilation_width,
+  uint32_t groups,
+  size_t group_input_channels,
+  size_t group_output_channels,
+  size_t input_channel_stride,
+  size_t output_channel_stride,
+  int8_t input_zero_point,
+  float input_scale,
+  const float* kernel_scale,
+  const int8_t* kernel,
+  const int32_t* bias,
+  int8_t output_zero_point,
+  float output_scale,
+  int8_t output_min,
+  int8_t output_max,
+  uint32_t flags,
+  xnn_operator_t* convolution_op_out);
+
+enum xnn_status xnn_setup_convolution2d_nhwc_qc8(
+  xnn_operator_t convolution_op,
+  size_t batch_size,
+  size_t input_height,
+  size_t input_width,
+  const int8_t* input,
+  int8_t* output,
+  pthreadpool_t threadpool);
+
+#endif  // XNN_NO_QC8_OPERATORS
+
 #ifndef XNN_NO_QS8_OPERATORS
 
 enum xnn_status xnn_create_add_nd_qs8(