Add ISLE reference documentation.

This documentation provides details for all of the ISLE language
features, and detailed rationale for why many of them are designed in
the way that they are. It is hopefully both a reasonable tutorial and
reference for someone looking to understand the DSL.

Note that this documentation is separate from and orthogonal to the
work to document the Cranelift bindings and integration work that
@fitzgen has covered well in #3556. This document can link to that one
and vice-versa once they are both in-tree.
This commit is contained in:
Chris Fallin
2021-11-23 16:45:06 -08:00
parent 0580c84405
commit b6bed81ba2
3 changed files with 1313 additions and 10 deletions

View File

@@ -13,6 +13,10 @@
- [Cranelift's register allocator](regalloc.md)
This page document Cranelift's current register allocator.
- [ISLE](isle.md)
This page documents the domain-specific language (DSL), ISLE, that
we use to define instruction-lowering patterns.
## Cranelift crate documentation:

1306
cranelift/docs/isle.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,13 @@
# ISLE: Instruction Selection/Lowering Expressions DSL
See also: [Language Reference](../docs/isle.md)
## Table of Contents
* [Introduction](#introduction)
* [Example Usage](#example-usage)
* [Tutorial](#tutorial)
* [Implementation](#implementation)
* [Sketch of Instruction Selector](#sketch-of-instruction-selector)
## Introduction
@@ -30,9 +31,7 @@ languages, and so should be translatable to formal constraints or other logical
specification languages.
Some more details and motivation are in [BA RFC
#15](https://github.com/bytecodealliance/rfcs/pull/15); additional
documentation will eventually be added to carefully specify the language
semantics.
#15](https://github.com/bytecodealliance/rfcs/pull/15). Reference documentation can be found [here](../docs/isle.md).
## Example Usage
@@ -522,9 +521,3 @@ implements it.
Relevant source files:
* `isle/src/codegen.rs`
## Sketch of Instruction Selector
Please see [this Cranelift
branch](https://github.com/cfallin/wasmtime/tree/isle) for an ongoing sketch of
an instruction selector backend in Cranelift that uses ISLE.