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;