Expand description
§ISLE: Instruction Selection / Lowering Expressions
ISLE is a domain specific language (DSL) for instruction selection and lowering
clif instructions to vcode’s MachInst
s in Cranelift.
ISLE is a statically-typed term-rewriting language. You define rewriting rules
that map input terms (clif instructions) into output terms (MachInst
s). These
rules get compiled down into Rust source test that uses a tree of match
expressions that is as good or better than what you would have written by hand.
Modules§
- Abstract syntax tree (AST) created from parsed ISLE.
- Generate Rust code from a series of Sequences.
- Compilation process, from AST to Sema to Sequences of Insts.
- Implementation of
DisjointSets
, to store disjoint sets and provide efficient operations to merge sets - Error types.
- Lexer for the ISLE language.
- Overlap detection for rules in ISLE.
- Parser for ISLE language.
- Semantic analysis.
- Put “sea of nodes” representation of a
RuleSet
into a sequential order. - Implementations of hashmap and hashset that asvoid observing non-determinism in iteration order. In a separate module so the compiler can prevent access to the internal implementation details.
- A strongly-normalizing intermediate representation for ISLE rules. This representation is chosen to closely reflect the operations we can implement in Rust, to make code generation easy.
Macros§
- Log a compiler-internal message for debugging purposes.