qoala-mlir¶
qoala-mlir is the MLIR-based middle and back end of the Qoala compiler stack. It consumes a high-level intermediate representation (Qoala HIR) emitted by the euqalyptus Python frontend, lowers it through three intermediate representations, and emits an .iqoala executable that can be run on the Qoala runtime.
The repository builds two command-line tools and a Python bindings package. qoala-opt runs analyses and optimizations and lowers between IRs — see qoala-opt. qoala-translate translates the lowest IR to the textual .iqoala format — see qoala-translate. And the qnet Python bindings package is what euqalyptus imports to construct Qoala HIR programmatically — see Python bindings.
Where to start¶
If you are new to the project, the Overview sketches the pipeline end-to-end, and Getting started walks you through installing a release and running the toolchain. Building from a checkout (rather than installing a release) lives under the Developer's guide. If you already know what you are looking for, jump straight into Tools / qoala-opt or the Passes reference for invoking a specific pass or flag, into the Operations reference for looking up a dialect operation, or into the Developer's guide and the Internals notes if you are contributing to the dialects themselves.
What lives where¶
| You want to… | Go to |
|---|---|
| Understand the pipeline at a glance | Overview, Architecture |
| Install a release / run the binaries | Getting started |
| Build the project from source | Developer's guide / Building from source |
| Look up an op in HIR / MIR / LIR | Operations reference |
| Look up a pass and its options | Passes reference |
See every qoala-opt / qoala-translate flag |
Tools |
| Write a Python script that produces Qoala HIR | Python bindings and the euqalyptus docs |
| Add a new dialect, op or pass | Developer's guide, Contributing |