<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in isle.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>cfe17cb1 - Cranelift: Generate integer numeric ops and conversions for ISLE in the meta crate (#11065)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#cfe17cb1</link>
        <description>Cranelift: Generate integer numeric ops and conversions for ISLE in the meta crate (#11065)* Cranelift: Generate integer numeric ops and conversions for ISLE in the meta crateThis automatically generates operations and conversions for integer types foruse in ISLE.Supported types are: `{i,u}{8,16,32,64,128}`We generate* Comparisons (eq, ne, lt, lt_eq, gt, gt_eq)* Arithmetic operations (add, sub, mul, div, neg)  * These each have checked, wrapping, and unwrapping variants* Bitwise operations (and, or, xor, shifts, counting leading/trailing zeros/ones)* A variety of predicates (is_zero, is_power_of_two, is_odd, etc...)  * These generate both partial constructors and a handful of extractors* Conversions  * These come in a variety of flavors: fallible, infallible, truncating,    unwrapping, sign-reinterpretation  * Fallible conversions are also available as an extractor* Fix copy paste* Rename `x_reinterpret_as_y` to `x_cast_[un]signed`* Collapse some fallible conversions in pulley lowering* Clean up pulley iconst lowering, make sure narrowest `xconst*` instruction is always used* Avoid an unnecessary truncation in riscv64 lowering* Use extractor instead of partial constructor in x64 `imm` rule* Clean up `op mem, imm` x64 lowering rules* Use `(i64_eq a b)` instead of `(u64_eq (i64_cast_unsigned a) (i64_cast_unsigned b))`* Rename `&lt;ty&gt;_unwrapping_&lt;op&gt;` to `&lt;ty&gt;_&lt;op&gt;`

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Thu, 19 Jun 2025 00:24:34 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7bf31723 - Cranelift: simplify some side-effectful instructions in ISLE (#10524)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#7bf31723</link>
        <description>Cranelift: simplify some side-effectful instructions in ISLE (#10524)* Cranelift: simplify some side-effectful instructions in ISLEThis commit adds a new top-level ISLE entrypoint specifically for instructionsin the side-effectful skeleton: `simplify_skeleton`. While these rewrites areprocessed during the egraph pass, values from skeleton instructions still do notget inserted into the egraph. Indeed, `simplify_skeleton` operateson *instructions* rather than *values* because we do not represent side effectsas values; values do not have side effects in CLIF, instructions do. Therefore,rather than doing a whole dynamic-programming style extraction of the bestcandidate simplification like we do with the egraph, we take an eager and greedyapproach.Furthermore, `simplify_skeleton` is limited only to skeleton instructions thatdo not involve control-flow or terminators right now. This is because changingthe control-flow graph can change whether a use is dominated by a def or not,and we do not currently have the machinery to track and fix up invalidateduses. Addressing this is left for future commits.* fix `MIN / -1` cprop and add negative tests for things simplify_skeleton cannot handle yet

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Tue, 08 Apr 2025 17:57:03 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>65f12eae - Move `assembler.isle` to &quot;untracked inputs&quot; (#10365)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#65f12eae</link>
        <description>Move `assembler.isle` to &quot;untracked inputs&quot; (#10365)This fixes a minor issue from #10352 where because `assembler.isle` waswritten by the build script itself by including it in the &quot;trackedinputs&quot; it meant that the build script always re-ran, never caching theoutput. This commit moves the file to the &quot;untracked inputs&quot; which meansthat while it&apos;s used by ISLE it won&apos;t be passed to Cargo as input sinceit&apos;s generated in-process. This re-enables `cargo build` not doinganything after a successful build.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Mon, 10 Mar 2025 19:53:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>bce7f205 - meta: move all ISLE-related generated code to `cranelift-codegen-meta` (#10352)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#bce7f205</link>
        <description>meta: move all ISLE-related generated code to `cranelift-codegen-meta` (#10352)* meta: move all ISLE-related generated code to `cranelift-codegen-meta`Previously, the new `cranelift-assembler-x64` crate would generate theassembler Rust code, the ISLE integration code, and the ISLE&apos;saccompanying Rust macro all in the same crate. Because these last twofiles were generated in the assembler&apos;s `OUT_DIR`, they caused issuesfor deterministic builds that expect those files in`cranelift-codegen`&apos;s `OUT_DIR` (see #10348). This change fixes that bymoving all of the assembler&apos;s generated integration code, the ISLEinstruction definitions and their accompanying Rust macro, to the`cranelift-codegen-meta` crate.This has the added advantage that `cranelift-assembler-x64` now canfocus exclusively on being an assembler and not being concerned with theISLE integration, which is substantial.* Move lint `allow` to problem siteApparently allowing unused variables for unimplemented parts of fixedregister instructions will not work at the macro scope; this moves the`allow` to the offending line.* Remove `rustfmt` of generated assembler code

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Sat, 08 Mar 2025 00:40:58 +0000</pubDate>
        <dc:creator>Andrew Brown &lt;andrew.brown@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>0e056008 - asm: introduce a new x64 assembler (#10110)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#0e056008</link>
        <description>asm: introduce a new x64 assembler (#10110)* asm: add initial infrastructure for an external assemblerThis change adds some initial logic implementing an external assemblerfor Cranelift&apos;s x64 backend, as proposed in RFC [#41].This adds two crates:- the `cranelift/assembler/meta` crate defines the instructions; to  print out the defined instructions use `cargo run -p  cranelift-assembler-meta`- the `cranelift/assembler` crate exposes the generated Rust code for  those instructions; to see the path to the generated code use `cargo  run -p cranelift-assembler`The assembler itself is straight-forward enough (modulo the codegeneration, of course); its integration into `cranelift-codegen` is whatis most tricky about this change. Instructions that we will emit in thenew assembler are contained in the `Inst::External` variant. Thisunfortunately increases the memory size of `Inst`, but only temporarilyif we end up removing the extra `enum` indirection by adopting the newassembler wholesale. Another integration point is ISLE: we generate ISLEdefinitions and a Rust helper macro to make the external assemblerinstructions accessible to ISLE lowering.This change introduces some duplication: the encoding logic (e.g. forREX instructions) currently lives both in `cranelift-codegen` and thenew assembler crate. The `Formatter` logic for the assembler `meta`crate is quite similar to the other `meta` crate. This minimalduplication felt worth the additional safety provided by the newassembler.The `cranelift-assembler` crate is fuzzable (see the `README.md`). Itwill generate instructions with randomized operands and compare theirencoding and pretty-printed string to a known-good disassembler,currently `capstone`. This gives us confidence we previously didn&apos;t haveregarding emission. In the future, we may want to think through how tofuzz (or otherwise check) the integration between `cranelift-codegen`and this new assembler level.[#41]: https://github.com/bytecodealliance/rfcs/pull/41* asm: bless Cranelift file testsUsing the new assembler&apos;s pretty-printing results in slightly differentdisassembly of compiled CLIF. This is because the assembler matches acertain configuration of `capstone`, causing the following obviousdifferences:- instructions with only two operands only print two operands; the  original `MInst` instructions separate out the read-write operand into  two separate operands (SSA-like)- the original instructions have some space padding after the  instruction mnemonic, those from the new assembler do notThis change uses the slightly new style as-is, but this is open fordebate; we can change the configuration of `capstone` that we fuzzagainst. My only preferences would be to (1) retain some way to visuallydistinguish the new assembler instructions in the disassembly(temporarily, for debugging) and (2) eventually transition topretty-printing instructions in Intel-style (`rw, r`) instead of thecurrent (`r, rw`).* ci: skip formatting when `rustfmt` not presentThough it is likely that `rustfmt` is present in a Rust environment,some CI tasks do not have this tool installed. To handle this case(plus the chance that other Wasmtime builds are similar), this changeskips formatting with a `stderr` warning when `rustfmt` fails.* vet: audit `arbtest` for use as a dev-dependency* ci: make assembler crates publishableIn order to satisfy `ci/publish.rs`, it would appear that we need to usea version that matches the rest of the Cranelift crates.* review: use Cargo workspace values* review: document `Inst`, move `Inst::name`* review: clarify &apos;earlier&apos; doc comment* review: document multi-byte opcodes* review: document `Rex` builder methods* review: document encoding rules* review: clarify &apos;bits&apos; -&gt; &apos;width&apos;* review: clarify confusing legacy prefixes* review: tweak IA-32e language* review: expand documentation for format* review: move feature list closer to enum* review: add a TODO to remove AT&amp;T operand ordering* review: move prefix emission to separate lines* review: add testing note* review: fix incomplete sentence* review: rename `MinusRsp` to `NonRspGpr`* review: add TODO for commented out instructions* review: add conservative down-conversion to `is_imm*`* Fuzzing updates for cranelift-assembler-x64 (#10)* Fuzzing updates for cranelift-assembler-x64* Ensure fuzzers build on CI* Move fuzz crate into the main workspace* Move `fuzz.rs` support code directly into fuzzer* Move `capstone` dependency into the fuzzer* Make `arbitrary` an optional dependencyShuffle around a few things in a few locations for this.* vet: skip audit for `cranelift-assembler-x64-fuzz`Co-authored-by: Alex Crichton &lt;alex@alexcrichton.com&gt;* review: use 32-bit form for 8-bit and 16-bit reg-regCranelift&apos;s existing lowering for 8-bit and 16-bit reg-reg `AND` usedthe wider version of the instruction--the 32-bit reg-reg `AND`. Aspointed out by @cfallin [here], this was likely due to avoid partialregister stalls. This change keeps that lowering by distinguishing moreprecisely between `GprMemImm` that are in register or memory.[here]: https://github.com/bytecodealliance/wasmtime/pull/10110#discussion_r1939822255* fix: skip `rustfmt` on generated code in more casesApparently `rustfmt` is not found on the `x86_64-unknown-illumos` build.This change skips the action in this new case.prtest:full* fix: feed Cargo the meta crate versionThis fixes errors with the `publish.rs` script.prtest:full---------Co-authored-by: Alex Crichton &lt;alex@alexcrichton.com&gt;

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Mon, 03 Feb 2025 23:59:11 +0000</pubDate>
        <dc:creator>Andrew Brown &lt;andrew.brown@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>c6658769 - Procedurally generate Pulley Cranelift boilerplate (#9760)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#c6658769</link>
        <description>Procedurally generate Pulley Cranelift boilerplate (#9760)* Procedurally generate Pulley Cranelift boilerplateThis commit is an integration of the `for_each_op!` macro (and extendedops) for Cranelift. This procedurally generates a few new items forCranelift&apos;s Pulley backend to use:* `RawInst` - a raw enumeration of instructions as-is.* ISLE constructors (e.g. `pulley_*` ctors) - generated for all of the  `RawInst` variants.* Register allocation methods for `RawInst`* Pretty printing methods for `RawInst`* Emission methods for `RawInst`The `Inst` enum now has a `Raw` variant which contains a `RawInst`. Inthis manner the main `Inst` enum can still have pseudo-insts like`Call`, polymorphic instructions like loads/stores (probably gonna getrefactored in the future though), and slightly different representationssuch as `Inst::Trap` having a `TrapCode` and `RawInst::Trap` wouldn&apos;t.The goal of this commit is to lower the amount of effort to quickly addand experiment with new instructions in Pulley. Ideally it&apos;s now just(a) define them in the pulley macro, (b) implement a direct loweringrule, and (c) implement it in the interpreter. Ideally no need toimplement anything else inside of Cranelift as everything should beauto-generated.Many existing `Inst` variants have been deleted in favor of theirequivalents in `RawInst` now. This undeniably increases the complexityof the Pulley backend but at least for me I find it well worth it tohave all this boilerplate generated automatically.* Fill out TODO* Fix conditional generation of pulley ISLE

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Tue, 10 Dec 2024 14:18:15 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>e4980870 - ISLE: upstream prototype ISLE verifier (Crocus) (#9178)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#e4980870</link>
        <description>ISLE: upstream prototype ISLE verifier (Crocus) (#9178)* Squash of verification changes 2024-08-28* Cleanup* fmt* More cleanup* clippy* update example spec* fmt* null* clippy part 1* clippy fix, null* clippy part 3* fmt* disable veri_engine tests in CI* clap dependency* remove strum* use easy-smt version* Get `cargo vet/deny` working and passingUndoes a seeming `cargo update` that was performed previously and thenadds a vet for the new crate added.* Flag new crates as not published* Revert &quot;remove strum&quot;This reverts commit df7b540b51ebf14d45a7b9f9bbedeba018a53e9a.* itertools* Review feedback* Future work comments for encodings* fmt* post merge Cargo.lock updates* authors---------Co-authored-by: Alex Crichton &lt;alex@alexcrichton.com&gt;

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Fri, 04 Oct 2024 00:36:24 +0000</pubDate>
        <dc:creator>Alexa VanHattum &lt;amv94@cornell.edu&gt;</dc:creator>
    </item>
<item>
        <title>b5268651 - Cranelift: Add a new backend for emitting Pulley bytecode (#9089)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#b5268651</link>
        <description>Cranelift: Add a new backend for emitting Pulley bytecode (#9089)* Cranelift: Add a new backend for emitting Pulley bytecodeThis commit adds two new backends for Cranelift that emits 32- and 64-bit Pulleybytecode. The backends are both actually the same, with a common implementationliving in `cranelift/codegen/src/isa/pulley_shared`. Each backend configures anISA flag that determines the pointer size, and lowering inspects this flag&apos;svalue when lowering memory accesses.To avoid multiple ISLE compilation units, and to avoid compiling duplicatecopies of Pulley&apos;s generated `MInst`, I couldn&apos;t use `MInst` as the `MachInst`implementation directly. Instead, there is an `InstAndKind` type that is anewtype over the generated `MInst` but which also carries a phantom typeparameter that implements the `PulleyTargetKind` trait. There are twoimplementations of this trait, a 32- and 64-bit version. This is necessarybecause there are various static trait methods for the mach backend which wemust implement, and which return the pointer width, but don&apos;t have access to any`self`. Therefore, we are forced to monomorphize some amount of code. This typeparameter is fairly infectious, and all the &quot;big&quot; backendtypes (`PulleyBackend&lt;P&gt;`, `PulleyABICallSite&lt;P&gt;`, etc...) are parameterizedover it. Nonetheless, not everything is parameterized over a `PulleyTargetKind`,and we manage to avoid duplicate `MInst` definitions and lowering code.Note that many methods are still stubbed out with `todo!`s. It is expected thatwe will fill in those implementations as the work on Pulley progresses.* Trust the `pulley-interpreter` crate, as it is part of our workspace* fix some clippy warnings* Fix a dead-code warning from inside generated code* Use a helper for emitting br_if+comparison instructions* Add a helper for converting `Reg` to `pulley_interpreter::XReg`* Add version to pulley workspace dependency* search the pulley directory for crates in the publish script

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Wed, 14 Aug 2024 21:17:30 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4b9f53a9 - move get_isle_compilations to codegen::meta (#8423)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs#4b9f53a9</link>
        <description>move get_isle_compilations to codegen::meta (#8423)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/meta/src/isle.rs</description>
        <pubDate>Sun, 21 Apr 2024 23:10:35 +0000</pubDate>
        <dc:creator>Michael McLoughlin &lt;mmcloughlin@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
