Automatically switch to GAVGPOOL micro-kernels in Average Pooling operator

PiperOrigin-RevId: 301927918
diff --git a/src/xnnpack/operator.h b/src/xnnpack/operator.h
index 610706b..c416cbc 100644
--- a/src/xnnpack/operator.h
+++ b/src/xnnpack/operator.h
@@ -240,14 +240,24 @@
   uint32_t flags;
 
   union {
-    union xnn_f32_avgpool_params f32_avgpool_params;
+    // Parameters for Global Average Pooling in CHW layout
     union xnn_f32_gavgpool_params f32_gavgpool_params;
     union xnn_f32_hswish_params f32_hswish_params;
-    union xnn_f32_output_params f32_output_params;
+    // Pixelwise Average Pooling normally use f32_output_params, but also initialize f32_avgpool_params in case it needs
+    // to switch to Global Average Pooling operation.
+    struct {
+      union xnn_f32_avgpool_params f32_avgpool_params;
+      union xnn_f32_output_params f32_output_params;
+    };
     union xnn_f32_spchw_params f32_spchw_params;
     union xnn_q8_add_params q8_add_params;
-    union xnn_q8_avgpool_params q8_avgpool_params;
     union xnn_q8_gemm_params q8_gemm_params;
+    // Average Pooling normally use q8_avgpool_params, but also initialize q8_gavgpool_params in case it needs to switch
+    // to Global Average Pooling operation.
+    struct {
+      union xnn_q8_avgpool_params q8_avgpool_params;
+      union xnn_q8_avgpool_params q8_gavgpool_params;
+    };
     union xnn_u8_output_params u8_output_params;
   };
   enum xnn_operator_type type;