IRDL is a domain-specific language to define intermediate representations (IRs). This is important because the current state-of-the-art with MLIR is to define a dialect using C++ and MLIR specific constructions which is a complex and time consuming process that required substantial expertise. By contrast IRDL is presented as a set of Python decorators and classes, readily enabling compiler developers to define a dialect and transformations upon this.

Of-course the definition of a DSL for IR construction is not enough, one also needs to demonstrate that this is capable of expressing the wide variety of existing IR dialects, and to that end Fehr analyzed all twenty eight domain-specific IRs developed as part of LLVM’s MLIR over the last two years and demonstrated how to express these exclusively in IRDL, only rarely requiring IRDL’s support for C++ extensions.

The flexibility and productivity offered by IRDL is the reason why this is one of the key technologies used in the xDSL project, with xDSL itself relying heavily on it. To date we have had some excellent results using IRDL when defining our DSL dialects in this project.

For more information

A preprint of the paper can be read here.