Skip to content

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.

Big picture: full pipeline

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