{
  "$schema": "https://ambiqai.github.io/helia-ui/schema/reference-model-1.json",
  "generatedFrom": {
    "sourceCommit": "5f3fed9f21a57390cc7f00f77a37db8f5f110cb8",
    "tool": "doxyref",
    "version": "1.17.0"
  },
  "language": "c",
  "modules": [
    {
      "description": "Perform max and average pooling operations",
      "name": "Pooling Functions",
      "path": "heliaCORE.Pooling",
      "submodules": [],
      "summary": "Perform max and average pooling operations",
      "symbols": [
        {
          "description": "Max pooling.",
          "examples": [],
          "id": "arm_max_pool_f32",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_max_pool_f32",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Pooling parameters (stride, padding and activation clamp).",
              "direction": "in",
              "name": "pool_params",
              "type": "const cmsis_nn_pool_params_f32 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the input tensor data.",
              "direction": "in",
              "name": "src",
              "type": "const float32_t *"
            },
            {
              "description": "Pooling kernel dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "dst",
              "type": "float32_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success, including an output with no rows or no columns (an extent of 0 or less), which writes nothing; `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments: a NULL pointer argument other than ctx, a batch count below 1, a pooling window that does not overlap the input, or window positions (output index * stride - padding, including one stride past the last window, plus the filter extent, and input size minus position) that do not fit in an int32_t. Nothing is written to dst then."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_max_pool_f32(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_pool_params_f32 *pool_params,\n    const cmsis_nn_dims *input_dims,\n    const float32_t *src,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    float32_t *dst\n)",
          "source": {
            "line": 540,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L540"
          },
          "summary": "Max pooling."
        },
        {
          "description": "Average pooling.",
          "examples": [],
          "id": "arm_avg_pool_f32",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_avg_pool_f32",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Pooling parameters (stride, padding and activation clamp).",
              "direction": "in",
              "name": "pool_params",
              "type": "const cmsis_nn_pool_params_f32 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the input tensor data.",
              "direction": "in",
              "name": "src",
              "type": "const float32_t *"
            },
            {
              "description": "Pooling kernel dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "dst",
              "type": "float32_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success, including an output with no rows or no columns (an extent of 0 or less), which writes nothing; `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments: a NULL pointer argument other than ctx, a batch count below 1, a pooling window that does not overlap the input, or window positions (output index * stride - padding, including one stride past the last window, plus the filter extent, and input size minus position) that do not fit in an int32_t. Nothing is written to dst then."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_avg_pool_f32(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_pool_params_f32 *pool_params,\n    const cmsis_nn_dims *input_dims,\n    const float32_t *src,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    float32_t *dst\n)",
          "source": {
            "line": 565,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L565"
          },
          "summary": "Average pooling."
        },
        {
          "description": "Max pooling.\n\n:::note\nThe output activation clamp on the scalar (non-MVE) build path is the bit-classified clamp of #380, so a NaN that reaches the clamp comes back as NaN at every optimization level on the gated toolchains rather than as a bound. A NaN rarely reaches it, though: the scalar max reduction uses an ordered compare that drops a NaN window element (and its NaN behavior at the shipped -Ofast is unspecified), and the MVE path's vmaxnmq reduction and vmaxnmq/vminnmq clamp suppress NaN, so this kernel does not promise NaN propagation end to end.\n\n:::",
          "examples": [],
          "id": "arm_max_pool_f16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_max_pool_f16",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Pooling parameters (stride, padding and activation clamp).",
              "direction": "in",
              "name": "pool_params",
              "type": "const cmsis_nn_pool_params_f16 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the input tensor data.",
              "direction": "in",
              "name": "src",
              "type": "const float16_t *"
            },
            {
              "description": "Pooling kernel dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "dst",
              "type": "float16_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success, including an output with no rows or no columns (an extent of 0 or less), which writes nothing; `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments: a NULL pointer argument other than ctx, a batch count below 1, a pooling window that does not overlap the input, or window positions (output index * stride - padding, including one stride past the last window, plus the filter extent, and input size minus position) that do not fit in an int32_t. Nothing is written to dst then."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_max_pool_f16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_pool_params_f16 *pool_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *src,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    float16_t *dst\n)",
          "source": {
            "line": 2695,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L2695"
          },
          "summary": "Max pooling."
        },
        {
          "description": "Average pooling.\n\n:::note\nOn non-MVE builds every output element goes through the bit-classified scalar clamp of #380, so a NaN in the pooling window propagates through the window sum and the output activation clamp to the output element at every optimization level on the gated toolchains, including the shipped -Ofast. On MVE builds the clamp is vmaxnmq/vminnmq with no NaN restore, so a NaN resolves to a clamp bound there instead.\n\n:::",
          "examples": [],
          "id": "arm_avg_pool_f16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_avg_pool_f16",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Pooling parameters (stride, padding and activation clamp).",
              "direction": "in",
              "name": "pool_params",
              "type": "const cmsis_nn_pool_params_f16 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the input tensor data.",
              "direction": "in",
              "name": "src",
              "type": "const float16_t *"
            },
            {
              "description": "Pooling kernel dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "dst",
              "type": "float16_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success, including an output with no rows or no columns (an extent of 0 or less), which writes nothing; `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments: a NULL pointer argument other than ctx, a batch count below 1, a pooling window that does not overlap the input, or window positions (output index * stride - padding, including one stride past the last window, plus the filter extent, and input size minus position) that do not fit in an int32_t. Nothing is written to dst then."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_avg_pool_f16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_pool_params_f16 *pool_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *src,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    float16_t *dst\n)",
          "source": {
            "line": 2712,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L2712"
          },
          "summary": "Average pooling."
        }
      ]
    }
  ],
  "name": "heliaCORE"
}
