{
  "$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": "Collection of fully-connected and matrix multiplication functions.\n\nFully-connected layer is basically a matrix-vector multiplication with bias. The matrix is the weights and the input/output vectors are the activation values. Supported {weight, activation} precisions include {8-bit, 8-bit} and {8-bit, 16-bit}",
      "name": "Fully-connected Layer Functions",
      "path": "heliaCORE.FC",
      "submodules": [],
      "summary": "Collection of fully-connected and matrix multiplication functions.",
      "symbols": [
        {
          "description": "Fully connected layer, NHWC layout.",
          "examples": [],
          "id": "arm_fully_connected_nhwc_f32",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_nhwc_f32",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float32_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float32_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float32_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float32_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_nhwc_f32(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f32 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float32_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float32_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float32_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float32_t *output\n)",
          "source": {
            "line": 1056,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L1056"
          },
          "summary": "Fully connected layer, NHWC layout."
        },
        {
          "description": "Fully connected layer, dispatch by layout.",
          "examples": [],
          "id": "arm_fully_connected_f32",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_f32",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float32_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float32_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float32_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float32_t *"
            },
            {
              "description": "Tensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.",
              "direction": "in",
              "name": "layout",
              "type": "arm_nn_tensor_layout"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_f32(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f32 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float32_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float32_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float32_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float32_t *output,\n    arm_nn_tensor_layout layout\n)",
          "source": {
            "line": 1084,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L1084"
          },
          "summary": "Fully connected layer, dispatch by layout."
        },
        {
          "description": "Get the temporary buffer size required by the fully connected layer.",
          "examples": [],
          "id": "arm_fully_connected_f32_get_buffer_size",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_f32_get_buffer_size",
          "params": [
            {
              "description": "Fully connected parameters.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_params_f32 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Filter tensor 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": "Tensor layout selector.",
              "direction": "in",
              "name": "layout",
              "type": "arm_nn_tensor_layout"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "Required buffer size in bytes, or 0 when no scratch buffer is needed."
            }
          ],
          "signature": "int32_t arm_fully_connected_f32_get_buffer_size(\n    const cmsis_nn_fc_params_f32 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    arm_nn_tensor_layout layout\n)",
          "source": {
            "line": 1107,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L1107"
          },
          "summary": "Get the temporary buffer size required by the fully connected layer."
        },
        {
          "description": "Batched matrix multiplication.",
          "examples": [],
          "id": "arm_batch_matmul_f32",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_batch_matmul_f32",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Batch matmul parameters and activation clamp.",
              "direction": "in",
              "name": "bmm_params",
              "type": "const cmsis_nn_bmm_params_f32 *"
            },
            {
              "description": "Left-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_lhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the left-hand-side input tensor.",
              "direction": "in",
              "name": "input_lhs",
              "type": "const float32_t *"
            },
            {
              "description": "Right-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_rhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the right-hand-side input tensor. With `ARM_NN_WEIGHT_FORMAT_NT_N_PACKED` each `[K, N]` matrix occupies `K * ceil(N / block) * block` elements (block is 4 for float32, 8 for float16) and consecutive batch matrices are stored back to back at that stride.",
              "direction": "in",
              "name": "input_rhs",
              "type": "const float32_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor.",
              "direction": "out",
              "name": "output",
              "type": "float32_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_batch_matmul_f32(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_bmm_params_f32 *bmm_params,\n    const cmsis_nn_dims *input_lhs_dims,\n    const float32_t *input_lhs,\n    const cmsis_nn_dims *input_rhs_dims,\n    const float32_t *input_rhs,\n    const cmsis_nn_dims *output_dims,\n    float32_t *output\n)",
          "source": {
            "line": 1491,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L1491"
          },
          "summary": "Batched matrix multiplication."
        },
        {
          "description": "Get the temporary buffer size required by batched matrix multiplication.",
          "examples": [],
          "id": "arm_batch_matmul_f32_get_buffer_size",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_batch_matmul_f32_get_buffer_size",
          "params": [
            {
              "description": "Batch matmul parameters.",
              "direction": "in",
              "name": "bmm_params",
              "type": "const cmsis_nn_bmm_params_f32 *"
            },
            {
              "description": "Left-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_lhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Right-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_rhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "Required buffer size in bytes, or 0 when no scratch buffer is needed."
            }
          ],
          "signature": "int32_t arm_batch_matmul_f32_get_buffer_size(\n    const cmsis_nn_bmm_params_f32 *bmm_params,\n    const cmsis_nn_dims *input_lhs_dims,\n    const cmsis_nn_dims *input_rhs_dims,\n    const cmsis_nn_dims *output_dims\n)",
          "source": {
            "line": 1510,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L1510"
          },
          "summary": "Get the temporary buffer size required by batched matrix multiplication."
        },
        {
          "description": "Fully connected layer, NHWC layout.",
          "examples": [],
          "id": "arm_fully_connected_nhwc_f16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_nhwc_f16",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float16_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float16_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float16_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float16_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_nhwc_f16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f16 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float16_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float16_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float16_t *output\n)",
          "source": {
            "line": 3067,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3067"
          },
          "summary": "Fully connected layer, NHWC layout."
        },
        {
          "description": "Fully connected layer, NHWC layout.\n\n:::note\nFloat16-lane entry (AmbiqAI/ns-cmsis-nn#586): the MVE legs run with no blockwise fold, exactly as arm_fully_connected_nhwc_f16 did before #586 (float16 accumulator lanes wherever it used them), for callers that trade accuracy on long reductions for speed. Same arguments, scratch buffer (and sizer), return codes and scalar leg as arm_fully_connected_nhwc_f16.\n\n:::",
          "examples": [],
          "id": "arm_fully_connected_nhwc_f16_acc16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_nhwc_f16_acc16",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float16_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float16_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float16_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float16_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_nhwc_f16_acc16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f16 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float16_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float16_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float16_t *output\n)",
          "source": {
            "line": 3086,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3086"
          },
          "summary": "Fully connected layer, NHWC layout."
        },
        {
          "description": "Fully connected layer, dispatch by layout.\n\n:::note\nAccumulation width follows the matmul helper the weight format selects (arm_nn_mat_mult_nt_t_f16 / arm_nn_mat_mult_nt_n_packed_f16): the scalar leg (non-MVE builds and ARM_MATH_AUTOVECTORIZE) accumulates in float32 and rounds to float16 once before the clamp (AmbiqAI/ns-cmsis-nn#449, #457); the MVE legs use blockwise float16 accumulation (AmbiqAI/ns-cmsis-nn#586, superseding #446's float16-lane choice for the MVE legs): in the kernel's own tap order an accumulator lane sums at most 32 taps in float16 (the bias, where the kernel starts from it, opens the first block), then the partial is widened exactly and added into a float32 accumulator; the float32 sum rounds to float16 once, before the clamp. An accumulator of at most 32 taps gives exactly the float16-lane result. The `_acc16` entry keeps float16 lanes throughout.\n\n:::",
          "examples": [],
          "id": "arm_fully_connected_f16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_f16",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float16_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float16_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float16_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float16_t *"
            },
            {
              "description": "Tensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.",
              "direction": "in",
              "name": "layout",
              "type": "arm_nn_tensor_layout"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_f16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f16 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float16_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float16_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float16_t *output,\n    arm_nn_tensor_layout layout\n)",
          "source": {
            "line": 3110,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3110"
          },
          "summary": "Fully connected layer, dispatch by layout."
        },
        {
          "description": "Fully connected layer, dispatch by layout.\n\n:::note\nAccumulation width follows the matmul helper the weight format selects (arm_nn_mat_mult_nt_t_f16 / arm_nn_mat_mult_nt_n_packed_f16): the scalar leg (non-MVE builds and ARM_MATH_AUTOVECTORIZE) accumulates in float32 and rounds to float16 once before the clamp (AmbiqAI/ns-cmsis-nn#449, #457); the MVE legs use blockwise float16 accumulation (AmbiqAI/ns-cmsis-nn#586, superseding #446's float16-lane choice for the MVE legs): in the kernel's own tap order an accumulator lane sums at most 32 taps in float16 (the bias, where the kernel starts from it, opens the first block), then the partial is widened exactly and added into a float32 accumulator; the float32 sum rounds to float16 once, before the clamp. An accumulator of at most 32 taps gives exactly the float16-lane result. The `_acc16` entry keeps float16 lanes throughout.\n\n:::\n\n:::note\nFloat16-lane entry (AmbiqAI/ns-cmsis-nn#586): the MVE legs run with no blockwise fold, exactly as arm_fully_connected_f16 did before #586 (float16 accumulator lanes wherever it used them), for callers that trade accuracy on long reductions for speed. Same arguments, scratch buffer (and sizer), return codes and scalar leg as arm_fully_connected_f16.\n\n:::",
          "examples": [],
          "id": "arm_fully_connected_f16_acc16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_f16_acc16",
          "params": [
            {
              "description": "Function context. Unused; may be NULL.",
              "direction": "in",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Fully connected parameters and activation clamp.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_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": "input",
              "type": "const float16_t *"
            },
            {
              "description": "Filter tensor dimensions.",
              "direction": "in",
              "name": "filter_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the filter tensor data.",
              "direction": "in",
              "name": "kernel",
              "type": "const float16_t *"
            },
            {
              "description": "Bias tensor dimensions.",
              "direction": "in",
              "name": "bias_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Optional bias tensor data.",
              "direction": "in",
              "name": "bias",
              "type": "const float16_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor data.",
              "direction": "out",
              "name": "output",
              "type": "float16_t *"
            },
            {
              "description": "Tensor layout selector. Current float APIs require `ARM_NN_LAYOUT_NHWC`.",
              "direction": "in",
              "name": "layout",
              "type": "arm_nn_tensor_layout"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_fully_connected_f16_acc16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_fc_params_f16 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const float16_t *input,\n    const cmsis_nn_dims *filter_dims,\n    const float16_t *kernel,\n    const cmsis_nn_dims *bias_dims,\n    const float16_t *bias,\n    const cmsis_nn_dims *output_dims,\n    float16_t *output,\n    arm_nn_tensor_layout layout\n)",
          "source": {
            "line": 3130,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3130"
          },
          "summary": "Fully connected layer, dispatch by layout."
        },
        {
          "description": "Get the temporary buffer size required by the fully connected layer.",
          "examples": [],
          "id": "arm_fully_connected_f16_get_buffer_size",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_fully_connected_f16_get_buffer_size",
          "params": [
            {
              "description": "Fully connected parameters.",
              "direction": "in",
              "name": "fc_params",
              "type": "const cmsis_nn_fc_params_f16 *"
            },
            {
              "description": "Input tensor dimensions.",
              "direction": "in",
              "name": "input_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Filter tensor 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": "Tensor layout selector.",
              "direction": "in",
              "name": "layout",
              "type": "arm_nn_tensor_layout"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "Required buffer size in bytes, or 0 when no scratch buffer is needed."
            }
          ],
          "signature": "int32_t arm_fully_connected_f16_get_buffer_size(\n    const cmsis_nn_fc_params_f16 *fc_params,\n    const cmsis_nn_dims *input_dims,\n    const cmsis_nn_dims *filter_dims,\n    const cmsis_nn_dims *output_dims,\n    arm_nn_tensor_layout layout\n)",
          "source": {
            "line": 3145,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3145"
          },
          "summary": "Get the temporary buffer size required by the fully connected layer."
        },
        {
          "description": "Batched matrix multiplication.\n\n:::note\nAccumulation width. Without adjoints the product goes through arm_nn_mat_mult_nt_t_f16 / arm_nn_mat_mult_nt_n_packed_f16 and so takes their rule: on the MVE legs a reduction of more than 32 taps per output accumulates blockwise (AmbiqAI/ns-cmsis-nn#586), in float16 up to 32. The adjoint paths accumulate in float16 throughout. There is no `_acc16` entry; a caller that needs float16 lanes on a long reduction calls arm_nn_mat_mult_nt_t_f16_acc16 / arm_nn_mat_mult_nt_n_packed_f16_acc16 per batch.\n\n:::",
          "examples": [],
          "id": "arm_batch_matmul_f16",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_batch_matmul_f16",
          "params": [
            {
              "description": "Function context that may hold a temporary scratch buffer.",
              "direction": "inout",
              "name": "ctx",
              "type": "const cmsis_nn_context *"
            },
            {
              "description": "Batch matmul parameters and activation clamp.",
              "direction": "in",
              "name": "bmm_params",
              "type": "const cmsis_nn_bmm_params_f16 *"
            },
            {
              "description": "Left-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_lhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the left-hand-side input tensor.",
              "direction": "in",
              "name": "input_lhs",
              "type": "const float16_t *"
            },
            {
              "description": "Right-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_rhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the right-hand-side input tensor. With `ARM_NN_WEIGHT_FORMAT_NT_N_PACKED` each `[K, N]` matrix occupies `K * ceil(N / block) * block` elements (block is 4 for float32, 8 for float16) and consecutive batch matrices are stored back to back at that stride.",
              "direction": "in",
              "name": "input_rhs",
              "type": "const float16_t *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Pointer to the output tensor.",
              "direction": "out",
              "name": "output",
              "type": "float16_t *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "`ARM_CMSIS_NN_SUCCESS` on success or `ARM_CMSIS_NN_ARG_ERROR` on invalid arguments."
            }
          ],
          "signature": "arm_cmsis_nn_status arm_batch_matmul_f16(\n    const cmsis_nn_context *ctx,\n    const cmsis_nn_bmm_params_f16 *bmm_params,\n    const cmsis_nn_dims *input_lhs_dims,\n    const float16_t *input_lhs,\n    const cmsis_nn_dims *input_rhs_dims,\n    const float16_t *input_rhs,\n    const cmsis_nn_dims *output_dims,\n    float16_t *output\n)",
          "source": {
            "line": 3327,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3327"
          },
          "summary": "Batched matrix multiplication."
        },
        {
          "description": "Get the temporary buffer size required by batched matrix multiplication.",
          "examples": [],
          "id": "arm_batch_matmul_f16_get_buffer_size",
          "kind": "function",
          "language": "c",
          "members": [],
          "name": "arm_batch_matmul_f16_get_buffer_size",
          "params": [
            {
              "description": "Batch matmul parameters.",
              "direction": "in",
              "name": "bmm_params",
              "type": "const cmsis_nn_bmm_params_f16 *"
            },
            {
              "description": "Left-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_lhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Right-hand-side input tensor dimensions.",
              "direction": "in",
              "name": "input_rhs_dims",
              "type": "const cmsis_nn_dims *"
            },
            {
              "description": "Output tensor dimensions.",
              "direction": "in",
              "name": "output_dims",
              "type": "const cmsis_nn_dims *"
            }
          ],
          "raises": [],
          "returns": [
            {
              "description": "Required buffer size in bytes, or 0 when no scratch buffer is needed."
            }
          ],
          "signature": "int32_t arm_batch_matmul_f16_get_buffer_size(\n    const cmsis_nn_bmm_params_f16 *bmm_params,\n    const cmsis_nn_dims *input_lhs_dims,\n    const cmsis_nn_dims *input_rhs_dims,\n    const cmsis_nn_dims *output_dims\n)",
          "source": {
            "line": 3339,
            "path": "Include/arm_nnfunctions_flt.h",
            "url": "https://github.com/AmbiqAI/ns-cmsis-nn/blob/5f3fed9f21a57390cc7f00f77a37db8f5f110cb8/Include/arm_nnfunctions_flt.h#L3339"
          },
          "summary": "Get the temporary buffer size required by batched matrix multiplication."
        }
      ]
    }
  ],
  "name": "heliaCORE"
}
