The LLVM Dialects library allows defining "dialects" on top of the LLVM IR "substrate" in a TableGen-based DSL that looks, on purpose, very much like the DSL used to define MLIR dialects.
Its main user is LLPC. We welcome other interested parties. Development of llvm-dialects happens on GitHub, using Issues and Pull Requests.
The dev branch is generally expected to work with (a recent version of) the
main branch of the llvm-project repository. No promises are made about
compatibility with any specific LLVM version.
- lib/Dialect: a helper library that allows the creation of basic dialects (in the MLIR sense) for LLVM IR
- lib/TableGen: common code for interpreting TableGen records that define a dialect
- utils/llvm-dialects-tblgen: a standalone CLI tool which reads a .td dialect definition and outputs C++ header and source files
The are multiple ways to combine llvm and llvm-dialects into a build process.
Common options are:
- Build
llvm-dialectsstand-alone against an installedllvm. - Build both
llvm-dialectsandllvmas part of some larger build process, e.g. with both being submodules of the enclosing project. - Build
llvm-dialectsas part of anllvmbuild. After checking outllvm-dialectsinllvm/toolsand re-running CMake, thellvm_dialectstarget (and otherllvm-dialectstargets) is available.
Run the check-llvm-dialects target to run a suite of automated tests.
Run the check-llvm-dialects-lit target to run only the lit tests, and
the check-llvm-dialects-units to run only the unit tests.