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-dialects
stand-alone against an installedllvm
. - Build both
llvm-dialects
andllvm
as part of some larger build process, e.g. with both being submodules of the enclosing project. - Build
llvm-dialects
as part of anllvm
build. After checking outllvm-dialects
inllvm/tools
and re-running CMake, thellvm_dialects
target (and otherllvm-dialects
targets) 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.