Skip to content
heliaAOT
Guides
HELIA HUB

Boolean operators

heliaAOT supports LOGICAL_AND, LOGICAL_OR, LOGICAL_NOT, Boolean EQUAL and NOT_EQUAL, and REDUCE_ANY / REDUCE_ALL. Their kernels first ship in ns-cmsis-nn 7.45.0. Like every module this heliaAOT version generates, including numeric-only models, they require ns-cmsis-nn 7.47.0 or newer.

Inputs and outputs use BOOL, without quantization. AND, OR, EQUAL and NOT_EQUAL support singleton broadcasting through rank four, including a constant [1,1,256,256] mask applied to [1,4,256,256] attention heads. NOT preserves the input shape. Boolean NOT_EQUAL also expresses XOR. Ordered Boolean comparisons and integer bitwise operators are unsupported.

ANY and ALL require constant INT32 scalar or vector axes. Negative axes and duplicates are normalized; an empty axis vector copies the input. keep_dims controls the logical output shape. Kernel geometry retains singleton reduced axes even when the logical result is squeezed. Scalar data with empty axes is supported. Runtime axes, ranks above four, empty data tensors, and element counts exceeding INT32_MAX are rejected before code generation.

Generated C calls a single direct Core entry per operator. Core selects its generic, DSP or MVE implementation at compilation; AOT emits no elementwise arithmetic loop or runtime kernel router. These operators require no scratch buffer and do not add a floating-point kernel dependency.

Boolean support does not by itself enable every attention graph. INT32 numeric comparisons, INT32 SELECT_V2 and NEG support are separate requirements; check the actual graph’s conversion diagnostics.