Crate cranelift_isle

source ·
Expand description

§ISLE: Instruction Selection / Lowering Expressions

ISLE is a domain specific language (DSL) for instruction selection and lowering clif instructions to vcode’s MachInsts in Cranelift.

ISLE is a statically-typed term-rewriting language. You define rewriting rules that map input terms (clif instructions) into output terms (MachInsts). 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.