History log of /wasmtime-44.0.1/cranelift/isle/docs/language-reference.md (Results 1 – 25 of 25)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: dev, v36.0.9, v44.0.1, v43.0.2, v36.0.8, v24.0.8, v44.0.0, v43.0.1, v42.0.2, v36.0.7, v24.0.7, v43.0.0, v42.0.1, v41.0.4, v42.0.0, v40.0.4, v36.0.6, v24.0.6
# 8ec3ff3b 12-Feb-2026 Michael McLoughlin <[email protected]>

Cranelift: ISLE recursion check (#12474)

* add decl rec attribute

* implement recursion check

* add required `req` attributes

* document the `RecursionError` variant

* add required `req` attribu

Cranelift: ISLE recursion check (#12474)

* add decl rec attribute

* implement recursion check

* add required `req` attributes

* document the `RecursionError` variant

* add required `req` attributes to pully ISLE rules

* add `rec` to isle example

* use dfs for cycle detection

* document the `rec` attribute

* recursion safety comments

* "is permitted to be recursive"

* fix documentation of RecursionError variant

show more ...


Revision tags: v41.0.3, v41.0.2, v41.0.1, v36.0.5, v40.0.3, v41.0.0, v36.0.4, v39.0.2, v40.0.2, v40.0.1, v40.0.0
# ac3358b1 04-Dec-2025 Chris Fallin <[email protected]>

Fix various broken links in docs. (#12125)

We've gotten a few one-off link-fix PRs, so in the Wasmtime meeting
today we decided to just fix them all ourselves so we don't get these
drive-by PRs anym

Fix various broken links in docs. (#12125)

We've gotten a few one-off link-fix PRs, so in the Wasmtime meeting
today we decided to just fix them all ourselves so we don't get these
drive-by PRs anymore (or at least not for a while, until links start to
rot again).

This PR fixes all applicable broken links we could find via the `lychee`
link-checker (thanks abrown for running that!). There are a few broken
links in subrepositories that this doesn't fix. And the link-checker
doesn't like links to subheaders on `.html` paths derived from `.md`
files by mdbook -- mdbook doesn't support these (rust-lang/mdBook#167)
but they render fine once published to the Web.

show more ...


Revision tags: v39.0.1, v39.0.0, v38.0.4, v37.0.3, v36.0.3, v24.0.5, v38.0.3, v38.0.2, v38.0.1, v37.0.2, v37.0.1, v37.0.0, v36.0.2, v36.0.1, v36.0.0, v35.0.0, v24.0.4, v33.0.2, v34.0.2, v34.0.1, v33.0.1, v24.0.3, v32.0.1, v34.0.0, v33.0.0, v32.0.0, v31.0.0
# 1136192e 03-Mar-2025 Bongjun Jang <[email protected]>

chore: fix parenthesis balance (#10317)

parentheses are not balanced here


Revision tags: v30.0.2, v30.0.1, v30.0.0, v29.0.1, v29.0.0, v28.0.1
# 48f8a9d3 13-Jan-2025 Julian Eager <[email protected]>

ISLE: fix more glitches in BNF (#9973)

* ensure not to consume const-ident as ident

* fix <spec>

* add missing `resultc` keyword

* correct <instantiate>

* Revert "add missing `resultc` keyword"

ISLE: fix more glitches in BNF (#9973)

* ensure not to consume const-ident as ident

* fix <spec>

* add missing `resultc` keyword

* correct <instantiate>

* Revert "add missing `resultc` keyword"

This reverts commit e2529f0d678b239db9fb64832ca8c1300cd4d44f.

* add <spec-bv> syntax

* glitch

* bitvec width is optional

* distinguish <spec_bv> from <ident>

show more ...


# e8dee7e5 05-Jan-2025 Julian Eager <[email protected]>

isle: BNF glitches (#9920)

* isle: BNF <int> glitch

such that it wouldn't match wildcard `_`

* fix `extern const` syntax


# af5a789b 27-Dec-2024 Julian Eager <[email protected]>

ISLE: improve syntax BNF (#9903)

* ISLE: improve syntax BNF

* fixes


# 47a60e83 27-Dec-2024 Jack Drogon <[email protected]>

fix typo (#9906)

Signed-off-by: Jack Drogon <[email protected]>


Revision tags: v28.0.0, v27.0.0
# bb886ffc 14-Nov-2024 Karl Meakin <[email protected]>

ISLE: Add proper bool type (#9593)

* ISLE: add proper booleans (expressions)

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add proper booleans (pattern

ISLE: Add proper bool type (#9593)

* ISLE: add proper booleans (expressions)

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add proper booleans (patterns)

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add proper booleans (spec expressions)

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: replace opaque boolean constants

Copyright (c) 2024, Arm Limited.

Replace all occurences of `$true` and `$false` with `true` and `false`.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: remove `on_lhs` argument

Instead of threading `on_lhs` through all the calls to `translate_expr`,
we can just set `is_partial` and `is_pure` on `root_flags` to true.

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add proper booleans (language reference)

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

---------

Signed-off-by: Karl Meakin <[email protected]>

show more ...


Revision tags: v26.0.1, v25.0.3, v24.0.2
# 859d38db 04-Nov-2024 Karl Meakin <[email protected]>

ISLE: update language reference (#9517)

The language specified in `language-reference.md` and the language
recognised by `parser.rs` had drifted out of sync. Update the language
reference to match t

ISLE: update language reference (#9517)

The language specified in `language-reference.md` and the language
recognised by `parser.rs` had drifted out of sync. Update the language
reference to match the actual language more closely.

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

show more ...


# 4ee35532 31-Oct-2024 Karl Meakin <[email protected]>

ISLE: Add block comments (#9529)

* ISLE: add block comments

Closes #3542

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add comment syntax to language

ISLE: Add block comments (#9529)

* ISLE: add block comments

Closes #3542

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: add comment syntax to language reference

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

* ISLE: align definition of whitespace and newlines with wasm spec

The ISLE language is superficially similar to WebAssembly, so to reduce
confusion I think it would help to copy the wasm spec where possible.

This is technically a breaking change, since `\x0C` (`\f`) will no longer be
lexed as whitespace, but this character is exceedingly rare in practice.

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

---------

Signed-off-by: Karl Meakin <[email protected]>

show more ...


# a2025f42 30-Oct-2024 Karl Meakin <[email protected]>

ISLE: remove Scheme-style boolean syntax (#9522)

The `#t` and `#f` syntax is misleading: they are actually integer
expressions, not booleans, so `#t` represents the integer `1` but *not*
the boolean

ISLE: remove Scheme-style boolean syntax (#9522)

The `#t` and `#f` syntax is misleading: they are actually integer
expressions, not booleans, so `#t` represents the integer `1` but *not*
the boolean `true`. They have been replaced by the named constants
`$true` and `$false`, and not used anywhere except tests, so they can be
removed without breaking any lowering/optimization code.

Copyright (c) 2024, Arm Limited.

Signed-off-by: Karl Meakin <[email protected]>

show more ...


Revision tags: v26.0.0, v21.0.2, v22.0.1, v23.0.3, v25.0.2, v24.0.1, v25.0.1, v25.0.0, v24.0.0, v23.0.2, v23.0.1, v23.0.0, v22.0.0, v21.0.1, v21.0.0
# 0e9121da 16-May-2024 FrankReh <[email protected]>

Fix some typos (#8641)

* occurred

* winch typos

* tests typos

* cli typos

* fuzz typos

* examples typos

* docs typos

* crates/wasmtime typos

* crates/environ typos

* crates/cranelift typos

Fix some typos (#8641)

* occurred

* winch typos

* tests typos

* cli typos

* fuzz typos

* examples typos

* docs typos

* crates/wasmtime typos

* crates/environ typos

* crates/cranelift typos

* crates/test-programs typos

* crates/c-api typos

* crates/cache typos

* crates other typos

* cranelift/codegen/src/isa typos

* cranelift/codegen/src other typos

* cranelift/codegen other typos

* cranelift other typos

* ci js typo

* .github workflows typo

* RELEASES typo

* Fix clang-format documentation line

---------

Co-authored-by: Andrew Brown <[email protected]>

show more ...


Revision tags: v20.0.2, v20.0.1, v20.0.0, v17.0.3, v19.0.2, v18.0.4, v19.0.1, v19.0.0, v18.0.3, v18.0.2, v17.0.2, v18.0.1, v18.0.0, v17.0.1, v17.0.0, v16.0.0, v15.0.1
# b960adb8 23-Nov-2023 Brett Cannon <[email protected]>

Fix broken link in ISLE language reference (#7577)


Revision tags: v15.0.0, v14.0.4, v14.0.3, v14.0.2, v13.0.1, v14.0.1, v14.0.0
# ef868a7a 04-Oct-2023 Alphyr <[email protected]>

riscv64: Further optimize constants loading (#7139)

* Further optimize RISCV constant loading

* Simplify existing rule

* Fix

* Bless missing tests

* Use right signedness for Imm20


Revision tags: minimum-viable-wasi-proxy-serve, v13.0.0, v12.0.2, v11.0.2, v10.0.2, v12.0.1, v12.0.0, v11.0.1, v11.0.0, v10.0.1, v10.0.0, v9.0.4, v9.0.3, v9.0.2, v9.0.1, v9.0.0, v6.0.2, v7.0.1, v8.0.1, v8.0.0
# b6bb6a19 18-Apr-2023 Alex Crichton <[email protected]>

Add support for binary/octal literals to ISLE (#6234)

* Add support for binary/octal literals to ISLE

In a number of x64-changes recently some u8 immediates are interpreted
as four bit-packed 2-bit

Add support for binary/octal literals to ISLE (#6234)

* Add support for binary/octal literals to ISLE

In a number of x64-changes recently some u8 immediates are interpreted
as four bit-packed 2-bit numbers and I have a tough time going between
hex and these bit-packed numbers. I've been writing `0xAA == 0b...` in
comments to indicate the intent but I figured it'd be a bit clearer if
the binary literal was accepted directly!

This is a minor update to the ISLE lexer to allow for binary `0b00...`
and octal `0o00...` literals in the same manner as hex literals. Some
comments in the x64 backend are then removed to use the binary literal
syntax directly.

* Update ISLE reference for octal/binary

* Update ISLE tests for octal/binary

show more ...


# 1dca793c 21-Mar-2023 Alexa VanHattum <[email protected]>

Add `partial` keyword to ISLE reference (#6076)

Noticed this was missing, tried to add based on the comments in https://github.com/bytecodealliance/wasmtime/pull/5392 (CC @jameysharp)


Revision tags: v7.0.0, v6.0.1, v5.0.1, v4.0.1, v6.0.0, v5.0.0, v4.0.0, v3.0.1, v3.0.0, v1.0.2, v2.0.2, v2.0.1, v2.0.0, v1.0.1, v1.0.0, v0.40.1, v0.40.0, v0.39.1, v0.38.3, v0.38.2, v0.39.0
# 688168b4 29-Jun-2022 Waleed Dahshan <[email protected]>

Fix a mistake in the language reference (#4352)

It is clear that the third rule does not contribute to the rewriting of the expression `(A (B (D 42)))` to `(C (D 42))` to `(E 42)`.


Revision tags: v0.38.1, v0.38.0
# 82381759 08-Jun-2022 Trevor Elliott <[email protected]>

Fix some typos in the isle language reference (#4248)


Revision tags: v0.37.0
# 03793b71 02-May-2022 Chris Fallin <[email protected]>

ISLE: remove all uses of argument polarity, and remove it from the language. (#4091)

This PR removes "argument polarity": the feature of ISLE extractors that lets them take
inputs aside from the va

ISLE: remove all uses of argument polarity, and remove it from the language. (#4091)

This PR removes "argument polarity": the feature of ISLE extractors that lets them take
inputs aside from the value to be matched.

Cases that need this expressivity have been subsumed by #4072 with if-let clauses;
we can now finally remove this misfeature of the language, which has caused significant
confusion and has always felt like a bit of a hack.

This PR (i) removes the feature from the ISLE compiler; (ii) removes it from the reference
documentation; and (iii) refactors away all uses of the feature in our three existing
backends written in ISLE.

show more ...


# c7e2c21b 29-Apr-2022 Chris Fallin <[email protected]>

ISLE language reference: move subsection to proper section. (#4087)

In #4072 I mistakenly put the subsection about if-let clauses in the
language doc just below the next section header, so it's in

ISLE language reference: move subsection to proper section. (#4087)

In #4072 I mistakenly put the subsection about if-let clauses in the
language doc just below the next section header, so it's in the wrong
section ("mapping to Rust"). This moves it back upward to where it
should be. Sorry about that!

show more ...


# 5b7d56f6 28-Apr-2022 Chris Fallin <[email protected]>

ISLE: add support for extended left-hand sides with `if-let` clauses. (#4072)

This PR adds support for `if-let` clauses, as proposed in
bytecodealliance/rfcs#21. These clauses augment the left-hand

ISLE: add support for extended left-hand sides with `if-let` clauses. (#4072)

This PR adds support for `if-let` clauses, as proposed in
bytecodealliance/rfcs#21. These clauses augment the left-hand side
(pattern-matching phase) of rules in the ISLE instruction-selection DSL
with sub-patterns matching on sub-expressions. The ability to list
additional match operations to perform, out-of-line from the original
toplevel pattern, greatly simplifies some idioms. See the RFC for more
details and examples of use.

show more ...


# eceb433b 28-Apr-2022 Chris Fallin <[email protected]>

Remove `=x` uses from ISLE, and remove support from the DSL compiler. (#4078)

This is a follow-up on #4074: now that we have the simplified syntax, we
can remove the old, redundant syntax.


Revision tags: v0.36.0, v0.35.3, v0.34.2, v0.35.2, v0.35.1, v0.35.0
# 9dbb8c25 23-Feb-2022 Chris Fallin <[email protected]>

Implicit type conversions in ISLE (#3807)

Add support for implicit type conversions to ISLE.

This feature allows the DSL user to register to the compiler that a
particular term (used as a constr

Implicit type conversions in ISLE (#3807)

Add support for implicit type conversions to ISLE.

This feature allows the DSL user to register to the compiler that a
particular term (used as a constructor or extractor) converts from one
type to another. The compiler will then *automatically* insert this term
whenever a type mismatch involving that specific pair of types occurs.

This significantly cleans up many uses of the ISLE DSL. For example,
when defining the compiler backends, we often have newtypes like `Gpr`
around `Reg` (signifying a particular type of register); we can define
a conversion from Gpr to Reg automatically.

Conversions can also have side-effects, as long as these side-effects
are idempotent. For example, `put_value_in_reg` in a compiler backend
has the effect of marking the value as used, causing codegen to produce
it, and assigns a register to the value; but multiple invocations of
this will return the same register for the same value. Thus it is safe
to use it as an implicit conversion that may be invoked multiple times.
This is documented in the ISLE-Cranelift integration document.

This PR also adds some testing infrastructure to the ISLE compiler,
checking that "pass" tests pass through the DSL compiler, "fail" tests
do not, and "link" tests are able to generate code and link that code
with corresponding Rust code.

show more ...


Revision tags: v0.33.1, v0.34.1, v0.34.0, v0.33.0, v0.32.1, v0.32.0
# 5a765c65 30-Nov-2021 Chris Fallin <[email protected]>

Add link to ISLE language reference to ISLE Cranelift integration doc.


# edef533d 30-Nov-2021 Chris Fallin <[email protected]>

Move ISLE docs into cranelift/isle/docs/ and update links.