IRDL: An IR Definition Language for SSA Compilers

Abstract: 

Designing compiler intermediate representations (IRs) is often a manual process that makes exploration and innovation in this space costly. Developers typically use general-purpose programming languages to design IRs. As a result, IR implementations are verbose, manual modifications are expensive, and designing tooling for the inspection or generation of IRs is impractical. While compilers relied historically on a few slowly evolving IRs, domain-specific optimizations and specialized hardware motivate compilers to use and evolve many IRs. We facilitate the implementation of SSA-based IRs by introducing IRDL, a domain-specific language to define IRs. We analyze all 28 domain-specific IRs developed as part of LLVM’s MLIR project over the last two years and demonstrate how to express these IRs exclusively in IRDL while only rarely falling back to IRDL’s support for generic C++ extensions. By enabling the concise and explicit specification of IRs, we provide foundations for developing effective tooling to automate the compiler construction process.

 

Tobias Grosser

Short Bio:

Tobias Grosser is a Reader in Compilers and Runtime Systems at Edinburgh passionate to advance optimizing compilers in close collaboration with the open-source communities. With LLVM's Polly and MLIR's Fast Polyhedral Library, Tobias made advanced polyhedral loop optimizations available in production-grade compilers. Tobias also collaborates closely with the LLVM community on the new MLIR software stack and he introduced with LLHD (now CIRCT), an open-source compilation stack for hardware design that brings the innovation speed of software compilers to the hardware design world. Tobias Grosser has received a Google Ph.D. Fellowship and a Swiss National Science Foundation Career Award.

JavaScript has been disabled in your browser