Skip to content
HKrogstie edited this page Sep 24, 2025 · 4 revisions

The jlm wiki serves as a collection of documents for working with the jlm codebase.

At its heart, the jlm compiler uses an intermediate representation based on Regionalized Value State Dependence Graphs (RVSDG). You can read about its theoretical foundations in the Publication section of the README.

Using jlm

Details about building jlm can be found in the README.

Depending on how the build is configured, building will create (a subset of) the following binaries:

  • jlm-opt can take a program written in LLVM IR, convert it into RVSDG, do some transformation on it, and output back into LLVM IR.
  • jlc is a helper that acts as a drop-in replacement for other C compilers, and uses clang + jlm-opt under the hood.
  • jlm-hls takes LLVM IR and does High Level Synthesis (HLS) to produce hardware descriptions in Verilog.

They will be located in build-release/ for release builds, and build-debug/ for debug builds. The folder build/ is a symlink to whichever target was last configured.

Tutorials

Development

See also

We host doxygen documentation, which is automatically built from the master branch.

Clone this wiki locally