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.