Skip to content
heliaRT
User guide
HELIA HUB

Operator explorer

Search the HELIA adapter inventory by operator, family or input data type. Each result lists important constraints and links to the adapter at this documentation’s source revision.

A listed type can use an optimized, reference or storage-only path. Shape, weight/output types and build settings still determine whether your model is supported.

How to read type support
  • FP16 arithmetic needs the matching heliaCORE feature and target support. Storage operations such as DEQUANTIZE are different.
  • int4 weights appear in compute-operator notes. They do not imply int4 activations.
  • Fallback is operator-specific. Check both allocation and invocation status. See Model compatibility and Floating point.
  • Operators outside this inventory may come from upstream Reference sources. Registering an operator does not prove that all its types and options are supported.

64 operators

ABS

Arithmetic
  • int8
  • int16
  • float32
  • float16

FP32, int8 and quantized int16 run CORE; quantized scaling requirements apply. Unquantized int16 uses Reference, which wraps -32768. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

ADD

Arithmetic
  • int8
  • int16
  • float32
  • float16
  • int32

Float identical-shape inputs support arbitrary rank. Optimized broadcasting supports rank <= 4; higher-rank FP32 uses Reference and FP16 is rejected. int32 follows the adapter reference path.

Adapter source

ARG_MAX

Reduction
  • int8
  • float32
  • float16

int8 runs CORE, FP32 runs CORE with ARM_NN_ENABLE_F32 and FP16 with ARM_NN_ENABLE_F16, at rank 1..4 with INT32 axis/output and positive reduced extent; other configurations use Reference (FP16 is rejected). A NaN never wins and ties keep the first index.

Adapter source

ARG_MIN

Reduction
  • int8
  • float32
  • float16

int8 runs CORE, FP32 runs CORE with ARM_NN_ENABLE_F32 and FP16 with ARM_NN_ENABLE_F16, at rank 1..4 with INT32 axis/output and positive reduced extent; other configurations use Reference (FP16 is rejected). A NaN never wins and ties keep the first index.

Adapter source
  • int8
  • int16
  • float32
  • float16

Four-dimensional tensors; check filter/stride/padding and output dimensions. Kernel failure is returned to the application.

Adapter source
  • int8
  • int16
  • float32
  • float16

Check batch broadcasting, adjoint flags and quantized weight/activation combinations against the adapter.

Adapter source

CONCATENATION

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64
  • bool

Optimized float paths support rank <= 4; higher-rank float inputs use Reference. Input/output type and quantization must agree.

Adapter source

CONV_2D

Compute
  • int8
  • int16
  • float32
  • float16

Quantized weight/bias combinations are constrained. int4 weights use int8 activations. Float grouped convolution uses Reference for FP32 and is rejected for FP16.

Adapter source

COS

Arithmetic
  • float32

Reference implementation in the HELIA adapter source; Float32 input/output.

Adapter source
  • int8
  • int16
  • float32
  • float16

Quantized weight/bias combinations and depth multiplier are constrained. int4 is a weight type with int8 activations; it is not a general activation type. Register_DEPTHWISE_CONV_2D_FLOAT16_ACC16() is an opt-in registration that accumulates float16 layers in float16 lanes on MVE; see the floating-point guide.

Adapter source

DEQUANTIZE

Quantization
  • int8
  • int16
  • uint8
  • float16

Output is FP32. A per-tensor int8 or int16 input runs on heliaCORE. An int8 or uint8 input may be per-channel (one scale and zero point per channel along any quantized dimension) and is dequantized with each channel's own parameters, matching TensorFlow Lite; a per-channel int16 input is rejected at Prepare (TensorFlow Lite rejects it at Invoke). FP16 means weight-storage widening, not FP16 computation; it calls arm_dequantize_f16_bits_f32 on every target, works without ARM_NN_ENABLE_F16, and matches the reference widening bit for bit at reset FPSCR: a NaN keeps its sign and payload and comes back quiet, on the MVE path too. On cores with an FPU but no MVE float16 (for example cortex-m4+fp) the widening runs on the FPU, so with FPSCR.DN (default NaN) set every NaN becomes 0x7FC00000.

Adapter source

DIV

Arithmetic
  • int8
  • int32
  • float32
  • float16

FP32 and FP16 run CORE for identical shapes and rank <= 4 broadcasts; other FP32 shapes use Reference and FP16 is rejected. int8 and int32 use Reference. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

EQUAL

Comparison
  • bool
  • float32
  • int8
  • int16
  • int32
  • int64

Boolean output. Supported input types depend on the comparison; input shapes and broadcast rules must match.

Adapter source

FILL

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64

Constant dimensions and scalar fill value. Float APIs require CORE >= 7.33.0 and matching enabled feature.

Adapter source
  • int8
  • int16
  • float32
  • float16

Quantized activation/weight/bias types must match a supported combination; includes int4 weights with int8 activations. Float paths require matching CORE features.

Adapter source

GATHER

Data movement
  • int8
  • int16
  • float32
  • float16

CORE >= 7.34.0. Native rank <= 4. Scalar indices use float native paths or int8 Reference; int16 rejects them. Higher-rank FP32/int8 use Reference; FP16/int16 reject.

Adapter source

GATHER_ND

Data movement
  • int8
  • int16
  • float32
  • float16

CORE >= 7.34.0. Native ranks <= 4 and positive index tuple width. Higher ranks and zero-width tuples use FP32/int8 Reference; FP16/int16 reject.

Adapter source

GREATER

Comparison
  • float32
  • int8
  • int16
  • int32
  • int64

Boolean output. Check broadcast and operand types; no FP16 comparison branch.

Adapter source

HARD_SWISH

Activation
  • int8
  • int16
  • float32
  • float16

FP16 requires the CORE float feature; without it preparation fails. FP32 can use Reference.

Adapter source

LESS

Comparison
  • float32
  • int8
  • int16
  • int32
  • int64

Boolean output. Check broadcast and operand types; no FP16 comparison branch.

Adapter source

LESS_EQUAL

Comparison
  • float32
  • int8
  • int16
  • int32
  • int64

Boolean output. Check broadcast and operand types; no FP16 comparison branch.

Adapter source

LOG

Arithmetic
  • float32

Reference implementation in the HELIA adapter source; Float32 input/output.

Adapter source

LOGISTIC

Activation
  • int8
  • int16
  • float32
  • float16

int8 uses a lookup table; int16 and enabled floats have HELIA paths. NaN is not supported by the optimized float activation path.

Adapter source

MAXIMUM

Arithmetic
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64

Optimized paths support rank <= 4. Higher-rank FP32/int8/int16 use Reference; FP16 is rejected. int32/int64 use Reference.

Adapter source
  • int8
  • int16
  • float32
  • float16

Four-dimensional tensors; check filter/stride/padding and output dimensions. Kernel failure is returned to the application.

Adapter source

MEAN

Reduction
  • int8
  • int16
  • float32
  • float16

Float optimized paths support rank <= 4 and axis sets; higher-rank FP32 uses Reference, FP16 is rejected. On every route and dtype, an output whose element count differs from the input's elements on the kept axes, an axis outside the input rank, or an input above rank 5, fails at Invoke; a scalar input ignores its axes, as in TFLite, FP16 included. An input whose nonzero extents multiply past INT32_MAX fails there too, even when another extent is 0. An empty input runs no kernel: every output element gets 0, the value TFLite's reference writes, quantized types included. See reduce_common.cc.

Adapter source

MINIMUM

Arithmetic
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64

Optimized paths support rank <= 4. Higher-rank FP32/int8/int16 use Reference; FP16 is rejected. int32/int64 use Reference.

Adapter source

MUL

Arithmetic
  • int8
  • int16
  • float32
  • float16
  • int32

Float identical-shape inputs support arbitrary rank. Optimized broadcasting supports rank <= 4; higher-rank FP32 uses Reference and FP16 is rejected. int32 follows the adapter reference path.

Adapter source

NEG

Arithmetic
  • float32
  • float16

FP32 and FP16 run CORE as sign-bit flips, NaN payloads kept. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

NOT_EQUAL

Comparison
  • bool
  • float32
  • int8
  • int16
  • int32
  • int64

Boolean output. Supported input types depend on the comparison; input shapes and broadcast rules must match.

Adapter source

PACK

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64

Equal input shapes, including scalars. Float APIs require CORE >= 7.33.0 and matching enabled feature.

Adapter source

PAD

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32

FP16 requires four-dimensional tensors and the float feature. Padding values and output shape must match.

Adapter source

PADV2

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32

FP16 requires four-dimensional tensors and the float feature. Padding values and output shape must match.

Adapter source

PRELU

Activation
  • int8
  • int16
  • float32
  • float16

int8, FP32 and FP16 run CORE when the output has the input shape, alpha broadcasts into it and rank <= 4; other FP32/int8 shapes use Reference and FP16 is rejected, except an empty FP16 tensor, which is a no-op. int16 uses Reference (int8 alpha). The output type must match the input type, an FP32 input needs an FP32 alpha, and preparation fails unless the output is the broadcast shape of input and alpha with rank <= 4. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

QUANTIZE

Quantization
  • int8
  • int16
  • int32
  • uint8
  • float32

Supported input/output pairs are specific: this type list does not imply all pairings. Registration is supplied by kernels/quantize.cc.

Adapter source

REDUCE_ALL

Reduction
  • bool

Boolean reduction using Reference in reduce_common.cc. On every route and dtype, an output whose element count differs from the input's elements on the kept axes, or an axis outside the input rank, fails at Invoke; a scalar input ignores its axes, as in TFLite. An input whose nonzero extents multiply past INT32_MAX fails there too, even when another extent is 0.

Adapter source

REDUCE_MAX

Reduction
  • int8
  • int16
  • float32
  • float16

int8/int16 run CORE at rank <= 4 with equal input/output quantization. FP32 runs CORE (arm_reduce_max_tflite_f32) at rank <= 4 with ARM_NN_ENABLE_F32 and Reference otherwise; FP16 runs CORE (arm_reduce_max_tflite_f16) at rank <= 4 and is rejected otherwise or without ARM_NN_ENABLE_F16. Both follow TFLite: a NaN is skipped, a window of NaNs, of -Inf only or an empty one gives the start value (-FLT_MAX, -65504 for FP16), and an empty axis list folds each element into it. On every route, dtype and rank, an output whose element count differs from the input's elements on the kept axes, or an axis outside the input rank, fails at Invoke; a scalar input ignores its axes, as in TFLite, FP16 included. An input whose nonzero extents multiply past INT32_MAX fails there too, even when another extent is 0. An empty input runs no kernel and every output element gets the start value. Implementation is in reduce_common.cc.

Adapter source

REDUCE_MIN

Reduction
  • int8
  • int16
  • float32
  • float16

int8/int16 run CORE at rank <= 4 with equal input/output quantization. FP32 runs CORE (arm_reduce_min_tflite_f32) at rank <= 4 with ARM_NN_ENABLE_F32 and Reference otherwise; FP16 runs CORE (arm_reduce_min_tflite_f16) at rank <= 4 and is rejected otherwise or without ARM_NN_ENABLE_F16. Both follow TFLite: a NaN is skipped, a window of NaNs, of +Inf only or an empty one gives the start value (+FLT_MAX, +65504 for FP16), and an empty axis list folds each element into it. On every route, dtype and rank, an output whose element count differs from the input's elements on the kept axes, or an axis outside the input rank, fails at Invoke; a scalar input ignores its axes, as in TFLite, FP16 included. An input whose nonzero extents multiply past INT32_MAX fails there too, even when another extent is 0. An empty input runs no kernel and every output element gets the start value. Implementation is in reduce_common.cc.

Adapter source

RELU

Activation
  • int8
  • int16
  • float32
  • float16

Check activation bounds, tensor shape and quantization. Optimized float paths require the matching CORE feature.

Adapter source

RELU6

Activation
  • int8
  • int16
  • float32
  • float16

Check activation bounds, tensor shape and quantization. Optimized float paths require the matching CORE feature.

Adapter source

RESHAPE

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64
  • uint8
  • bool

Preserves storage and element count. FP16 storage works without float arithmetic enabled. Types listed here are representative fixed-width storage types.

Adapter source
  • int8
  • int16
  • float32
  • float16

Runs CORE, bit-exact with the reference for every align_corners/half_pixel_centers setting; layers with an empty extent use Reference and FP16 is rejected there. Preparation fails unless the output matches the input type and has shape [N, size[0], size[1], C], and fails for an empty input height or width with a nonempty output. Needs an (height + width) int32 scratch. FP32 uses Reference without ARM_NN_ENABLE_F32. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

RSQRT

Arithmetic
  • int8
  • int16
  • float32
  • float16

FP32 and FP16 run CORE; integer paths use Reference. int16 must be affine-quantized with zero zero points; unquantized int16 is rejected at preparation. FP16 requires CORE >= 7.33.0 and ARM_NN_ENABLE_F16; input/output shapes and types must match. A negative input gives the positive quiet NaN.

Adapter source

SIN

Arithmetic
  • float32

Reference implementation in the HELIA adapter source; Float32 input/output.

Adapter source

SOFTMAX

Activation
  • int8
  • int16
  • float32
  • float16

Optimized float path requires beta = 1. Other beta values use FP32 Reference or fail FP16 preparation. int8-to-int16 output has a dedicated registration.

Adapter source

SPLIT

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32

Constant axis and equal output extents. Float APIs require CORE >= 7.33.0 and corresponding enabled feature.

Adapter source

SPLIT_V

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32

Constant axis and split sizes; one inferred -1 size and zero-length pieces are allowed. Shapes/types/counts are checked during preparation. Float APIs require CORE >= 7.33.0.

Adapter source

SQRT

Arithmetic
  • float32
  • float16

FP32 and FP16 run CORE. FP16 requires CORE >= 7.33.0 and ARM_NN_ENABLE_F16; input/output shapes and types must match. A negative input gives the positive quiet NaN.

Adapter source
  • int8
  • int16
  • int32
  • float32
  • float16

int8/int16 run CORE for identical shapes and rank <= 4 broadcasts. FP32 runs CORE for identical shapes, keeping subnormal results on the Helium path as well, and uses Reference for broadcasts. The Reference keeps subnormal results on GCC builds; clang builds (ATfE, armclang) may vectorize its loop with Helium, which flushes them. FP16 runs CORE for identical shapes and rejects broadcasts. int32 uses Reference. FP16 requires ARM_NN_ENABLE_F16; without it preparation fails.

Adapter source

SQUEEZE

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32
  • int64
  • uint8
  • bool

Bitwise storage copy; removes unit dimensions, checks matching byte counts and rejects strings. Input rank <= 8.

Adapter source

STRIDED_SLICE

Data movement
  • int8
  • int16
  • int32
  • float32
  • float16
  • bool

int8, int16 and int32 run CORE; FP32 runs CORE with ARM_NN_ENABLE_F32 and Reference without it; FP16 runs CORE with ARM_NN_ENABLE_F16 and fails preparation without it; bool uses Reference. Rank is limited to 4. For every type, an input axis above 2^30 or an input above INT32_MAX elements fails at Invoke, however small the slice; otherwise an empty slice writes nothing and succeeds, and a nonempty slice whose output element count differs from the slice's fails at Invoke. The input and output types must match.

Adapter source

SUB

Arithmetic
  • int8
  • int16
  • float32
  • float16
  • int32

Float identical-shape inputs support arbitrary rank. Optimized broadcasting supports rank <= 4; higher-rank FP32 uses Reference and FP16 is rejected. int32 follows the adapter reference path.

Adapter source

SUM

Reduction
  • int8
  • int16
  • float32
  • float16

SUM is LiteRT REDUCE_SUM. Float optimized paths support rank <= 4 and axis sets; higher-rank FP32 uses Reference, FP16 is rejected. On every route and dtype, an output whose element count differs from the input's elements on the kept axes, an axis outside the input rank, or an input above rank 5, fails at Invoke; a scalar input ignores its axes, as in TFLite, FP16 included. An input whose nonzero extents multiply past INT32_MAX fails there too, even when another extent is 0. An empty input runs no kernel: every output element gets 0, the value TFLite's reference writes, quantized types included. See reduce_common.cc.

Adapter source

SVDF

Recurrent
  • int8
  • float32
  • float16

Data input is int8, FP32 or enabled FP16. int16 is a time-weight/state type, not a supported data input type. Variable state persists across invocations; weight types, rank and activation configuration are constrained.

Adapter source

TANH

Activation
  • int8
  • int16
  • float32
  • float16

NaN is not supported by the optimized float activation path. Float support is build-gated.

Adapter source

TRANSPOSE

Data movement
  • int8
  • int16
  • float32
  • float16

Optimized rank <= 4. Higher ranks use Reference; FP16 has a bitwise storage fallback even with its float feature disabled.

Adapter source
  • int8
  • int16
  • float32
  • float16

Check output shape, padding and quantized weight/bias combinations. Float features are build-gated.

Adapter source
  • int8
  • int16
  • float32
  • float16

Standard four-gate LSTM only. Preparation rejects peephole, projection, layer normalization and missing gates (CIFG), including FP32. Quantized inputs use int8 weights and int16 cell state. Preserve variable state across invocations.

Adapter source

UNPACK

Data movement
  • int8
  • int16
  • float32
  • float16
  • int32

One output per selected axis element. Float APIs require CORE >= 7.33.0 and matching enabled feature.

Adapter source

Download the complete operator inventory as Markdown, including input types, constraints and source links.