<?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 opts.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>0889323a - cranelift-codegen: rename most uses of std to core and alloc (#12237)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#0889323a</link>
        <description>cranelift-codegen: rename most uses of std to core and alloc (#12237)* rename most std uses to core and alloc* cargo fmt

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Sat, 03 Jan 2026 00:54:48 +0000</pubDate>
        <dc:creator>SSD &lt;96286755+the-ssd@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>099102d9 - Remove `expect(clippy::allow_attributes_without_reason)` from cranelift-codegen (#11182)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#099102d9</link>
        <description>Remove `expect(clippy::allow_attributes_without_reason)` from cranelift-codegen (#11182)* Remove `expect(clippy::allow_attributes_without_reason)` from cranelift-codegenThis commit gets around to migrating the `cranelift-codegen` crate torequire a reason on lint directives and additionally switch to`#[expect]` where possible.prtest:full* Move x64-only item to x64 backend

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Mon, 07 Jul 2025 17:25:40 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>f678260b - Cranelift: Revive division-by-constant magic sequences (#11129)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#f678260b</link>
        <description>Cranelift: Revive division-by-constant magic sequences (#11129)* Revive the old module for generation division-by-constant magic numbers* Add proptests for divide-by-constant magic number generators* Use division-by-constant magic sequences in the ISLE mid-endThe application of these sequences have been ported to ISLE now to betterintegrate with our existing mid-end optimizations and to allow for recursiverule application in the optimized right-hand sides.Fixes https://github.com/bytecodealliance/wasmtime/issues/6049* Fix transcription to ISLE and failing tests* address review feedback* Fix ci test failure

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Wed, 25 Jun 2025 19:59:31 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>e71769e5 - Adjust lint warning reason (#10910)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#e71769e5</link>
        <description>Adjust lint warning reason (#10910)After digging into this more I was confused by compiler diagnostics (orlack thereof). This is indeed dead code but it&apos;s required due to how weuse macros/generated code/etc, so just suppress the warning for now.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Tue, 03 Jun 2025 15:30:33 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>ef921e81 - Update pinned nightly used in CI (#10893)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#ef921e81</link>
        <description>Update pinned nightly used in CI (#10893)* Update pinned nightly used in CIResolves some various warnings cropping up from rustc/clippy. This doestrigger what for us is a false positive (I believe) dead code warningwhich I&apos;ve annotated as `#[allow]` for now (alas this can&apos;t be`#[expect]` because it&apos;s a nighly-only warning).* Remove dead methods when component-model is disabled

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Mon, 02 Jun 2025 18:01:10 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>90ac295e - Update Wasmtime to the 2024 Rust Edition (#10806)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#90ac295e</link>
        <description>Update Wasmtime to the 2024 Rust Edition (#10806)* Update Wasmtime to the 2024 Rust EditionNow that our MSRV supports the 2024 edition it&apos;s possible to make thisswitch. This commit moves Wasmtime to the 2024 Edition to keepup-to-date with Rust idioms and access many of the edition featuresexclusive to the 2024 edition.prtest:full* Reformat with the 2024 edition

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Mon, 19 May 2025 16:40:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>5ded0f4e - Refactor call ABI implementation (#10722)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#5ded0f4e</link>
        <description>Refactor call ABI implementation (#10722)This refactors implementation of call ABI handling across architectureswith the goal of bringing s390x in line with other platforms.The main idea is to- handle main call instruction selection and generation in ISLE  (like s390x but unlike other platforms today)- handle argument setup mostly outside of ISLE  (like other platforms but unlike s390x today)- handle return value processing as part of the call instructio  (like all platforms today)All platforms now emit the main call instruction directly from ISLE,which e.g. handles selection of the correct ISA instruction dependingon the call destination.  This ISLE code calls out to helper routinesto handle argument and return value processing.  These helpers aremostly common code and provided by the Callee and/or Lower layers,with some platform-specific additions via ISLE Context routines.The old CallSite abstraction is no longer needed; most of thedifferences between call and return_call handling disappear.(There is still a common-code CallInfo vs. a platform-specifcReturnCallInfo.  At this point, it should be relatively straight-forward to make CallInfo platform-specific as well if desired,but this is not done here.)Some ISLE infrastructure for iterators / loops, which was onlyever used by the s390x argument processing code, has been removed.s390x now closely matches all other platforms, with only a fewspecial cases (slightly different tail-call ABI requires somedifferences in stack offset computations; we still need tohandle vector lane swaps for cross-ABI calls), which shouldsimplify future maintenance.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Tue, 06 May 2025 15:53:24 +0000</pubDate>
        <dc:creator>Ulrich Weigand &lt;ulrich.weigand@de.ibm.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/src/opts.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/src/opts.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>82c0a09b - Simplify aegraphs by removing union-find and canonical eclass IDs. (#10471)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#82c0a09b</link>
        <description>Simplify aegraphs by removing union-find and canonical eclass IDs. (#10471)I was recently re-thinking through some of the core data structuredesign in our aegraph implementation, and wondered: do we really needthe union-find data structure, the notion of &quot;canonical&quot; ID for aneclass separate from its latest ID (root of union-node tree), and thehashcons-key canonicalization using all of this? It&apos;s an awful lot ofcomplexity and has led to some fairly subtle bugs (e.g., #6126), and isgenerally unsatisfying.I had the realization: the only case where the distinction betweencanonical and latest ID matters is when we expand an eclass after itsinitial (eager) rewriting, which happens before we see its uses. If wehypothesize that this happens rarely, then it should be fine tocanonicalize based only on latest ID -- we shouldn&apos;t lose much (and wecan measure this loss empirically).The chief case where this kind of &quot;late eclass expansion&quot; still happensis: if we have some expression E1 that eventually rewrites to E2 viasome simplification, and E2 already exists earlier in the program, thenE1 will join the eclass. If we then have some `E3 := E1 + 1`, and later`E4 := E2 + 1`, we need the union-find canonicalization for E4 to GVN toE3. Otherwise, the latest ID for the eclass that eventually contains E1and E2 is different at the time that E3 uses it (and is GVN&apos;d andrewritten) and when E4 does. Put another way: E3 captures a snapshot ofits operand&apos;s eclass before a new node joins it, and is neverreprocessed when that happens, so E3 remains distinct.But if the `E2 -&gt; E1` rewrite is truly &quot;directional&quot; toward a betterrepresentation that we will always want to choose -- say, `x + 0 -&gt; x`,or any constant-propagation in general -- then if the eager rewritingfor E2 produces E1&apos;s eclass ID directly *without* adding E2 to itsnodes, then all users will still canonicalize as before. This &quot;onlyreturn the rewrite target, don&apos;t union with it&quot; before is exactly our`subsume` operator.Put another way: subsumption prevents growing eclasses later, sosnapshots in time remain the latest, and everyone canonicalizes with thesame ID. We move to a true immutable data structure, with simplehashconsing with no magic.The rewrite semantics are then much simpler too: if any value ismarked &quot;subsume&quot;, we pick it (pick an arbitrary one if multiple) as ourrewrite result; otherwise, create an eclass with the original rewriteinput and all rewrite outputs (by creating union-nodes in the DFG). Noauto-subsume or factoring in availability -- that&apos;s it. &quot;Subsume&quot; means:always pick the rewritten value, don&apos;t keep the original, and we use itwhenever that&apos;s unambiguously true for better canonicalization.Given that, it turns out that we can remove the union-find mechanismentirely. It also turns out that we can unify the scoped-hashmap for&quot;effectful/idempotent ops&quot; with the ordinary hashmap for pure ops;everything can be scoped. To get working LICM we do need to retain our&quot;available block&quot; mechanism, but only to insert values at a higher scopelevel in the scoped hashmap -- it is now heuristic, not load-bearing forcorrectness.I suspect that the fixpoint loop computing analysis results can go awaytoo, now that we truly don&apos;t update arguments -- we have a simpleimmutable data structure with everything snapshotted at creation -- butI haven&apos;t made that change yet.This change appears to be &quot;in the noise&quot; in both runtime and compiletime -- a Sightglass run on the default suite shows only```compilation :: cycles :: benchmarks/pulldown-cmark/benchmark.wasm  &#916; = 551234.50 &#177; 514580.62 (confidence = 99%)  new.so is 1.00x to 1.01x faster than old.so!  [61669181 72513567.85 98139932] new.so  [60991071 73064802.35 120044089] old.soexecution :: cycles :: benchmarks/bz2/benchmark.wasm  &#916; = 232827.80 &#177; 204621.12 (confidence = 99%)  old.so is 1.00x to 1.01x faster than new.so!  [67208140 72812782.32 89996076] new.so  [69531172 72579954.52 80530142] old.so```which seem like suitably small swings that are fine. Spot-checking theaegraph stats on the same function before-and-after shows the sameoptimizations happening in all functions I examined, and we see thecompile-tests showing no movement except for a value renumbering in onecase. So: no effect objectively, but deletes code and significantlysimplifies the core algorithm.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Wed, 26 Mar 2025 17:18:18 +0000</pubDate>
        <dc:creator>Chris Fallin &lt;chris@cfallin.org&gt;</dc:creator>
    </item>
<item>
        <title>0c0153c1 - Enforce `clippy::clone_on_copy` for the workspace (#9025)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#0c0153c1</link>
        <description>Enforce `clippy::clone_on_copy` for the workspace (#9025)* Derive `Copy` for `Val`* Fix `clippy::clone_on_copy` for the whole repo* Enforce `clippy::clone_on_copy` for the workspace* fix some more clippy::clone_on_copy that got missed

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Sat, 27 Jul 2024 01:11:06 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>41eca60b - cranelift: Add `f16const` and `f128const` instructions (#8893)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#41eca60b</link>
        <description>cranelift: Add `f16const` and `f128const` instructions (#8893)* cranelift: Add `f16const` and `f128const` instructions* cranelift: Add constant propagation for `f16` and `f128`

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Wed, 17 Jul 2024 16:39:47 +0000</pubDate>
        <dc:creator>beetrees &lt;b@beetr.ee&gt;</dc:creator>
    </item>
<item>
        <title>b338f921 - egraph: Resolve all aliases at once (#8240)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#b338f921</link>
        <description>egraph: Resolve all aliases at once (#8240)* egraph: Resolve all aliases at onceThis way we can use the linear-time alias rewriting pass, and then avoidhaving to think about value aliases ever again.* Resolve aliases in facts and values_labelsWhen resolving aliases in values_labels, this discards debug info onvalues which are replaced by aliases. However, that is equivalent to theexisting behavior in `Lower::get_value_labels`, which resolves valuealiases first and only then looks for attached debug info.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Thu, 28 Mar 2024 22:04:04 +0000</pubDate>
        <dc:creator>Jamey Sharp &lt;jsharp@fastly.com&gt;</dc:creator>
    </item>
<item>
        <title>850b0fb8 - cranelift: Constant propagate `bswap` (#8220)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#850b0fb8</link>
        <description>cranelift: Constant propagate `bswap` (#8220)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Fri, 22 Mar 2024 15:35:05 +0000</pubDate>
        <dc:creator>Luke Street &lt;luke@street.dev&gt;</dc:creator>
    </item>
<item>
        <title>c4478334 - cranelift: Remove support for WebAssembly tables (#8124)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#c4478334</link>
        <description>cranelift: Remove support for WebAssembly tables (#8124)Wasmtime no longer needs any of this infrastructure and neither shouldanybody else.This diff is nearly identical to @bjorn3&apos;s version of the same change,except I didn&apos;t remove Uimm64, which has started being used in otherplaces. I forgot bjorn3 had already tackled this part until after I wasalready done, but it&apos;s reassuring that we both made the same changes.https://github.com/bjorn3/wasmtime/commit/fb82ccb3948e949641a6d9581aa84472f68f97b8Fixes #5532

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Thu, 14 Mar 2024 15:40:25 +0000</pubDate>
        <dc:creator>Jamey Sharp &lt;jsharp@fastly.com&gt;</dc:creator>
    </item>
<item>
        <title>9ce3ffe1 - Update some CI dependencies (#7983)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#9ce3ffe1</link>
        <description>Update some CI dependencies (#7983)* Update some CI dependencies* Update to the latest nightly toolchain* Update mdbook* Update QEMU for cross-compiled testing* Update `cargo nextest` for usage with MIRIprtest:full* Remove lots of unnecessary imports* Downgrade qemu as 8.2.1 seems to segfault* Remove more imports* Remove unused winch trait method* Fix warnings about unused trait methods* More unused imports* More unused imports

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Thu, 22 Feb 2024 23:54:03 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>8a2d9bc7 - Constant propagate int-to-float conversions (#7915)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#8a2d9bc7</link>
        <description>Constant propagate int-to-float conversions (#7915)This commit is born out of a fuzz bug on x64 that was discovered recently.Today, on `main`, and in the 17.0.1 release Wasmtime will panic when compilingthis wasm module for x64:    (module      (func (result v128)        i32.const 0        i32x4.splat        f64x2.convert_low_i32x4_u))panicking with:    thread &apos;&lt;unnamed&gt;&apos; panicked at /home/alex/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cranelift-codegen-0.104.1/src/machinst/lower.rs:766:21:    should be implemented in ISLE: inst = `v6 = fcvt_from_uint.f64x2 v13  ; v13 = const0`, type = `Some(types::F64X2)`    note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceBisections points to the &quot;cause&quot; of this regression as #7859 whichmore-or-less means that this has always been an issue and that PR justhappened to expose the issue. What&apos;s happening here is that egraphoptimizations are turning the IR into a form that the x64 backend can&apos;tcodegen. Namely there&apos;s no general purpose lowering of i64x2 beingconverted to f64x2. The Wasm frontend never produces this but theoptimizations internally end up producing this.Notably here the result of this function is constant and what&apos;shappening is that a convert-of-a-splat is happening. In lieu of addingthe full general lowering to x64 (which is perhaps overdue since this isthe second or third time this panic has been triggered) I&apos;ve opted toadd constant propagation optimizations for int-to-float conversions.These are all based on the Rust `as` operator which has the samesemantics as Cranelift. This is enough to fix the issue here for thetime being.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Mon, 12 Feb 2024 17:23:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>61807647 - Bump MSRV to 1.73.0, use 1.75.0 in CI (#7739)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#61807647</link>
        <description>Bump MSRV to 1.73.0, use 1.75.0 in CI (#7739)* Bump MSRV to 1.73.0, use 1.75.0 in CIPulling in the Rust update released over the winter holidays.* Fix more warnings

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Tue, 02 Jan 2024 19:36:14 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>37300d3f - Add `sextend_maybe` and `uextend_maybe` to opt ISLE (#7710)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#37300d3f</link>
        <description>Add `sextend_maybe` and `uextend_maybe` to opt ISLE (#7710)* Add a test demonstrating a missed optimization* Add `[su]extend_maybe` to opt ISLE

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Wed, 20 Dec 2023 19:31:09 +0000</pubDate>
        <dc:creator>scottmcm &lt;scottmcm@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>2a367f4e - Cranelift: Add iconst shorthand to simplify ISLE opts (#7670)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#2a367f4e</link>
        <description>Cranelift: Add iconst shorthand to simplify ISLE opts (#7670)* Demote `simm32` and `uimm8` to lowering ISLE onlyThere seems to be nothing in opt ISLE that actually wanted them, just something that&apos;s more consistently done with using a 64-bit type to read from an Imm64.And `simm32` feels like it&apos;s probably wrong to me -- `simm32` can&apos;t actually match `-1_i32` -- but I&apos;m not confident enough in my analysis to actually change it.* Cranelift: Add iconst shorthand to simplify ISLE opts* Do a manually un-currying to avoid duplicating loading the `InstructionData`* rustfmt is my nemesis

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Tue, 12 Dec 2023 19:57:14 +0000</pubDate>
        <dc:creator>scottmcm &lt;scottmcm@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>ebfe1ccd - ISLE: Build in maximum limit for multi constructor returns (#7526)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts.rs#ebfe1ccd</link>
        <description>ISLE: Build in maximum limit for multi constructor returns (#7526)Allows users to avoid runaway rules that match too much stuff.No statistically significant speed up to compilation on sightglass, but good tohave as a safeguard anyways.Fixes #7500

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts.rs</description>
        <pubDate>Mon, 13 Nov 2023 19:09:51 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
