Exclude unused parts of xnn_params

Avoid allocating static memory for never-initialized members of xnn_params.

PiperOrigin-RevId: 279871233
diff --git a/src/xnnpack/params.h b/src/xnnpack/params.h
index 636384f..ba97c12 100644
--- a/src/xnnpack/params.h
+++ b/src/xnnpack/params.h
@@ -1304,57 +1304,69 @@
 
 struct xnn_parameters {
   bool initialized;
-  struct {
-    struct gemm_parameters gemm;
-    struct dwconv_parameters dwconv[XNN_MAX_Q8_DWCONV_UKERNELS];
-    struct avgpool_parameters avgpool;
-    struct gavgpool_parameters gavgpool;
-    xnn_vadd_ukernel_function vadd;
-  } q8;
-  struct {
-    struct maxpool_parameters maxpool;
-    xnn_univector_ukernel_function clamp;
-    xnn_u8_lut32norm_ukernel_function lut32norm;
-    xnn_u8_rmax_ukernel_function rmax;
-  } u8;
-  struct {
-    xnn_x8_lut_ukernel_function lut;
-    struct zip_parameters zip;
-  } x8;
-  struct {
-    struct gemm_parameters gemm;
-    struct gemm_parameters gemm2;
-    struct dwconv_parameters dwconv[XNN_MAX_F32_DWCONV_UKERNELS];
-    struct avgpool_parameters avgpool;
-    struct pavgpool_parameters pavgpool;
-    struct gavgpool_parameters gavgpool;
-    struct maxpool_parameters maxpool;
-    struct argmaxpool_parameters argmaxpool[XNN_MAX_F32_ARGMAXPOOL_UKERNELS];
-    xnn_univector_ukernel_function clamp;
-    xnn_univector_ukernel_function hswish;
-    struct prelu_parameters prelu;
-    xnn_vadd_ukernel_function vadd;
-    struct vmulcaddc_parameters vmulcaddc;
-    // Sparse Matrix-Dense Matrix Multiplication (NR=1 block).
-    struct spmm_parameters spmm;
-    // Sparse Matrix-Dense Matrix Multiplication (NR=2 block).
-    struct spmm_parameters spmm2;
-    // Sparse Matrix-Dense Matrix Multiplication (NR=4 block).
-    struct spmm_parameters spmm4;
-    // Direct 3x3 stride-2 Convolution with 3 input channels and HWC->SpCHW layout conversion.
-    struct hwc2spchw_dconv_parameters hwc2spchw_dconv3x3c3s2;
-    // Direct 3x3 stride-1 Convolution with padding 1 on left and right in SpCHW layout.
-    struct spchw_dwconv_parameters spchw_dwconv3x3;
-    // Direct 3x3 stride-2 Convolution with padding 1 on left and right in SpCHW layout.
-    struct spchw_dwconv_parameters spchw_dwconv3x3s2;
-    // Global Average Pooling in SpCHW layout.
-    struct spchw_gavgpool_parameters spchw_gavgpool;
-  } f32;
-  struct {
-    struct pad_parameters pad;
-    xnn_unpool_ukernel_function unpool;
-    struct zip_parameters zip;
-  } x32;
+  #ifndef XNN_NO_Q8_OPERATORS
+    struct {
+      struct gemm_parameters gemm;
+      struct dwconv_parameters dwconv[XNN_MAX_Q8_DWCONV_UKERNELS];
+      struct avgpool_parameters avgpool;
+      struct gavgpool_parameters gavgpool;
+      xnn_vadd_ukernel_function vadd;
+    } q8;
+  #endif  // XNN_NO_Q8_OPERATORS
+  #ifndef XNN_NO_U8_OPERATORS
+    struct {
+      struct maxpool_parameters maxpool;
+      xnn_univector_ukernel_function clamp;
+      xnn_u8_lut32norm_ukernel_function lut32norm;
+      xnn_u8_rmax_ukernel_function rmax;
+    } u8;
+  #endif  // XNN_NO_U8_OPERATORS
+  #ifndef XNN_NO_X8_OPERATORS
+    struct {
+      xnn_x8_lut_ukernel_function lut;
+      struct zip_parameters zip;
+    } x8;
+  #endif  // XNN_NO_X8_OPERATORS
+  #ifndef XNN_NO_F32_OPERATORS
+    struct {
+      struct gemm_parameters gemm;
+      struct gemm_parameters gemm2;
+      struct dwconv_parameters dwconv[XNN_MAX_F32_DWCONV_UKERNELS];
+      struct avgpool_parameters avgpool;
+      struct pavgpool_parameters pavgpool;
+      struct gavgpool_parameters gavgpool;
+      struct maxpool_parameters maxpool;
+      struct argmaxpool_parameters argmaxpool[XNN_MAX_F32_ARGMAXPOOL_UKERNELS];
+      xnn_univector_ukernel_function clamp;
+      xnn_univector_ukernel_function hswish;
+      struct prelu_parameters prelu;
+      xnn_vadd_ukernel_function vadd;
+      struct vmulcaddc_parameters vmulcaddc;
+      #ifndef XNN_NO_SPNCHW_OPERATORS
+        // Sparse Matrix-Dense Matrix Multiplication (NR=1 block).
+        struct spmm_parameters spmm;
+        // Sparse Matrix-Dense Matrix Multiplication (NR=2 block).
+        struct spmm_parameters spmm2;
+        // Sparse Matrix-Dense Matrix Multiplication (NR=4 block).
+        struct spmm_parameters spmm4;
+        // Direct 3x3 stride-2 Convolution with 3 input channels and HWC->SpCHW layout conversion.
+        struct hwc2spchw_dconv_parameters hwc2spchw_dconv3x3c3s2;
+        // Direct 3x3 stride-1 Convolution with padding 1 on left and right in SpCHW layout.
+        struct spchw_dwconv_parameters spchw_dwconv3x3;
+        // Direct 3x3 stride-2 Convolution with padding 1 on left and right in SpCHW layout.
+        struct spchw_dwconv_parameters spchw_dwconv3x3s2;
+        // Global Average Pooling in SpCHW layout.
+        struct spchw_gavgpool_parameters spchw_gavgpool;
+      #endif  // XNN_NO_SPNCHW_OPERATORS
+    } f32;
+  #endif  // XNN_NO_F32_OPERATORS
+  #ifndef XNN_NO_X32_OPERATORS
+    struct {
+      struct pad_parameters pad;
+      xnn_unpool_ukernel_function unpool;
+      struct zip_parameters zip;
+    } x32;
+  #endif  // XNN_NO_X32_OPERATORS
 };
 
 extern XNN_INTERNAL struct xnn_parameters xnn_params;