ondrix is a language and compiler framework for portable embedded DSP kernels. It separates algorithm intent, target-independent numeric semantics, and target capabilities in a layered MLIR stack, with AOT code generation as the primary execution model.
The intended compilation flow is:
ondrix language
-> ondrix dialect
-> ondsp dialect
-> generic scalar, generic Vector, or ortumcore path
-> LLVM dialect / LLVM IR
-> object file or firmware integration
The three project dialects have distinct responsibilities:
ondrixpreserves DSP algorithm and kernel intent.ondspdefines target-independent numeric and accumulator semantics.ortumcorerepresents abstract target capabilities without exposing private instruction encodings or physical registers.
Textual MLIR remains the complete development and debugging entry point. An
experimental .ox frontend, executable Q15/Q31 scalar and Vector paths, DSP
algorithm contracts, and bounded OrtumCore capability validation are under
active development.
See the documentation index for language usage, numeric semantics, implementation status, and experimental feature notes.
ondrix tracks LLVM/MLIR 17.0.6 at commit
6009708b4367171ccdbf4b5905cb6a803753fe18. This is the tested baseline.
Other LLVM 17 revisions are accepted with a configuration warning for
migration experiments; other major versions are rejected.
Configure against an external LLVM/MLIR build:
cmake -G Ninja \
-S /path/to/ondrix \
-B /path/to/ondrix/build \
-DMLIR_DIR=/path/to/llvm-project/build/lib/cmake/mlir \
-DLLVM_DIR=/path/to/llvm-project/build/lib/cmake/llvm \
-DLLVM_EXTERNAL_LIT=/path/to/llvm-project/build/bin/llvm-litBuild and run the regression suite:
ninja -C /path/to/ondrix/build ondrix-opt
ninja -C /path/to/ondrix/build check-ondrixLicensed under the Apache License 2.0.
