* Multi-extractors should only be used in multi-terms * ISLE int literals should be in range for their type See #5431 and #5423. * Make StableSet usable in public interfaces Also implement an immutable version of DisjointSets::find_mut. * Return analyzed terms from overlap check If the caller wants the `trie_again::RuleSet` for a term, don't make them recompute it. * Expose binding lookups and sources * Don't dedup or prune impure constructor calls * Record int types for bindings and constraints This means that bindings for constant integers that have the same value but not the same type no longer hash-cons into the same binding ID. * Track binding sites from calling multi-terms * Implement more traits
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.