<?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 selects.isle</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>bc7272a3 - [Cranelift] add select simplification rules (#12742)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#bc7272a3</link>
        <description>[Cranelift] add select simplification rules (#12742)* [Cranelift] select rules add* Update cranelift/codegen/src/opts/selects.isleCo-authored-by: Nick Fitzgerald &lt;fitzgen@gmail.com&gt;* [Cranelift] generalize select simplification---------Co-authored-by: Nick Fitzgerald &lt;fitzgen@gmail.com&gt;

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 11 Mar 2026 14:07:00 +0000</pubDate>
        <dc:creator>Hyunbin Kim &lt;akim9905@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>05277cf8 - Fix ISLE optimization for vector inputs (#12179)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#05277cf8</link>
        <description>Fix ISLE optimization for vector inputs (#12179)Add some more `fits_in_64` constraints to types to handle the fact that`iconst_u` can&apos;t construct a 128-bit output.Closes #12170

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Thu, 18 Dec 2025 18:30:05 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>7d413555 - [Cranelift] `min x y &lt; y =&gt; false` (#11998)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#7d413555</link>
        <description>[Cranelift] `min x y &lt; y =&gt; false` (#11998)* [Cranelift] `min x y &lt; y =&gt; false`* fix tet* add comm/flipped* remove redundancies after renaming

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Sat, 08 Nov 2025 06:34:24 +0000</pubDate>
        <dc:creator>Bongjun Jang &lt;bongjun.jang@kaist.ac.kr&gt;</dc:creator>
    </item>
<item>
        <title>447efbd3 - [Cranelift] folds selects (#11648)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#447efbd3</link>
        <description>[Cranelift] folds selects (#11648)* [Cranelift] add opts and tests* [Cranelift] update tests* [Cranelift] generalize cases* [Cranelift] update tests* [Cranelift] rename test

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 10 Sep 2025 06:54:00 +0000</pubDate>
        <dc:creator>Bongjun Jang &lt;bongjun.jang@kaist.ac.kr&gt;</dc:creator>
    </item>
<item>
        <title>60a0443d - Use a wrapping add in egraph optimizations (#11588)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#60a0443d</link>
        <description>Use a wrapping add in egraph optimizations (#11588)* Use a wrapping add in egraph optimizationsThis commit fixes an accidental bug from #11526 found via fuzzing wherethe `u64_add` helper in ISLE is a panicking add but the desiredsemantics here were a wrapping add. A test is added here and theadditions are updated to `u64_wrapping_add` instead.* Add output assertion

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 03 Sep 2025 17:55:16 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>a74c21ea - Fix a verifier error generated during optimizations (#11562)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#a74c21ea</link>
        <description>Fix a verifier error generated during optimizations (#11562)This commit fixes an accidental regression from #11526 detected onOSS-Fuzz. The `imm64` constants created needed to be masked off to thetype width to avoid having the upper bits set.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Fri, 29 Aug 2025 02:50:11 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>4e9766ca - [Cranelift] `(C ? X : Y) + Z --&gt; (C ? X + Z : Y + Z)` (#11526)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#4e9766ca</link>
        <description>[Cranelift] `(C ? X : Y) + Z --&gt; (C ? X + Z : Y + Z)` (#11526)* [ISLE] add an opt and its test* [ISLE] add runtests for new opt

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 27 Aug 2025 14:32:44 +0000</pubDate>
        <dc:creator>Bongjun Jang &lt;bongjun.jang@kaist.ac.kr&gt;</dc:creator>
    </item>
<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/src/opts/selects.isle#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/src/opts/selects.isle</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>910ab3f6 - Cranelift: `((x &gt; 0) ? x : -x)` =&gt; `(iabs x)` (#10850)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#910ab3f6</link>
        <description>Cranelift: `((x &gt; 0) ? x : -x)` =&gt; `(iabs x)` (#10850)* add rules* add tests* fix rules

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 28 May 2025 17:33:32 +0000</pubDate>
        <dc:creator>Bongjun Jang &lt;bongjun.jang@kaist.ac.kr&gt;</dc:creator>
    </item>
<item>
        <title>701af54f - Cranelift: egraphs: fix a few sources of exponential rewrite blowup. (#10579)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#701af54f</link>
        <description>Cranelift: egraphs: fix a few sources of exponential rewrite blowup. (#10579)This arrived as a fuzzbug [1] with some very interesting optimizationbehavior. The test case has sequences of `(select _ x x)` operators --that is, conditional selects with both inputs the same -- that arechained together sequentially. A few aspects of the egraph framework andour optimization rules conspired to create exponential blowup:- We have a rewrite rule for `(select _ x x) -&gt; x`, but we do not  subsume; this means that we create an eclass for both. This in itself  is not a problem; however...- We have some *other* rules that look through the inputs to the select  to detect other cases (e.g.: select between constants 1 and 0, or 0  and 0, or ...), so we traverse both inputs;- And we also do nested rewrites, so when the rewrite rule for `(select  _ x x) -&gt; x` fires, and the `x` is itself another select in a long  chain of selects, we traverse all possible paths (through first  or second args) to the roots. In effect we get an eclass that has the  ultimate root and then 2^n combinations of `select` nodes on top of  that.This got worse with the recent change to canonicalize less (forsimpler/cheaper compilation), hence the fuzzbug timeouts.This PR includes a few fixes, all complementary to each other:- The `(select _ x x) -&gt; x` rule now subsumes; this is another case  where we have a strictly better rewrite and so we should short-circuit  the eclass blowup.- The rewrite runner sorts and dedups returned value numbers; in  debugging the above I noticed we were getting two rules producing the  same rewritten value and we were adding the same value twice with two  union nodes.- The rewriter keeps a total eclass size per root and limits the total  eclass size to a fixed limit (currently 5). We thus now have limits in  three different axes: depth of eager rewrites (5); number of returned  matches (also 5); and total size of eclass (5). The first two don&apos;t  necessarily imply the third because we otherwise can keep unioning on  top of an eclass and (as seen above) see exponential blowup.[1]: https://oss-fuzz.com/testcase-detail/4806924172591104

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Tue, 15 Apr 2025 16:30:45 +0000</pubDate>
        <dc:creator>Chris Fallin &lt;chris@cfallin.org&gt;</dc:creator>
    </item>
<item>
        <title>eb896ad0 - Add ISLE rules to generate 128-bit comparisons (#9176)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#eb896ad0</link>
        <description>Add ISLE rules to generate 128-bit comparisons (#9176)This commits adds pattern-matches to detect 128-bit comparisons encodedin 64-bit comparisons and promote them to 128-bit to enable backends toapply architecture-specific optimizations to these operations.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 28 Aug 2024 20:09:06 +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/selects.isle#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/selects.isle</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>f8c9f671 - More spaceship patterns (#7702)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#f8c9f671</link>
        <description>More spaceship patterns (#7702)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Tue, 19 Dec 2023 21:12:54 +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/selects.isle#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/selects.isle</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>e7d42325 - Cranelift: additional `icmp` &amp; `select` ISLE opts (#7615)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#e7d42325</link>
        <description>Cranelift: additional `icmp` &amp; `select` ISLE opts (#7615)* Cranelift: additional `icmp` &amp; `select` ISLE opts* Don&apos;t include an invalid i8-to-i8 extend in the egraphTests covering both widths here (added in previous commit) still pass.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Thu, 30 Nov 2023 19:40:20 +0000</pubDate>
        <dc:creator>scottmcm &lt;scottmcm@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>16aa0646 - egraphs: Recognize `bitselect` from bitwise operations (#6879)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#16aa0646</link>
        <description>egraphs: Recognize `bitselect` from bitwise operations (#6879)* egraphs: Transform bitops into a `bitselect`* cranelift: Add bitwise bitselect tests

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Tue, 29 Aug 2023 19:47:28 +0000</pubDate>
        <dc:creator>Afonso Bordado &lt;afonso360@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>4fc053b5 - cranelift: Remove `f{min,max}_pseudo` instructions (#6874)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#4fc053b5</link>
        <description>cranelift: Remove `f{min,max}_pseudo` instructions (#6874)This commit removes these two instructions and replaces them insteadwith their equivalents using `fcmp` plus `select` or `bitselect`depending on the type (`bitselect` for vectors, `select` for scalars).The motivation for this commit is that incorrect optimizations for theseinstructions were removed in #6859 and likely stemmed from thesurprising definitions of these instructions. These originally wereintended to correspond to operations in the SIMD proposal forWebAssembly but nowadays the functionality of these instructions isreplaced with:* Lowering from wasm to clif uses the `fcmp` plus `select` combo instruction.* Backends that support optimizing this pattern use ISLE patterns to  match the instruction and emit the specialization for the pseudo  semantics.This means that while the instructions are removed here it should be thecase that no functionality is lost and the output of Wasmtime/Craneliftshould still be the same as it was before. Existing tests using thepseudo instructions were preserved except the riscv64 ones (where thelowering was deleted) and the dynamic AArch64 ones. Both s390x and x64continue to have specialized patterns for this compare-plus-select.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Mon, 21 Aug 2023 20:44:07 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>2728866f - egraphs: Delete `select+fcmp` to `f{min,max}_pseudo` transform (#6859)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#2728866f</link>
        <description>egraphs: Delete `select+fcmp` to `f{min,max}_pseudo` transform (#6859)This transform is wrong for the inputs in the attached testcase.It was introduced in #5546 and has been sort of unnoticed until #6843 causedsome wasmtime testcode to fire this optimization rule and produce thiscounterexample.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Mon, 21 Aug 2023 17:13:16 +0000</pubDate>
        <dc:creator>Afonso Bordado &lt;afonso360@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>42528d82 - Add `multi_lane` precondition to `bitselect` =&gt; `{u,s}{min,max}` rewrite (#6201)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#42528d82</link>
        <description>Add `multi_lane` precondition to `bitselect` =&gt; `{u,s}{min,max}` rewrite (#6201)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Wed, 12 Apr 2023 19:04:30 +0000</pubDate>
        <dc:creator>Karl Meakin &lt;karlwfmeakin@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>c0166f78 - ISLE: simplify select/bitselect when both choices are the same (#6141)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle#c0166f78</link>
        <description>ISLE: simplify select/bitselect when both choices are the same (#6141)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/opts/selects.isle</description>
        <pubDate>Tue, 11 Apr 2023 22:41:19 +0000</pubDate>
        <dc:creator>Karl Meakin &lt;karlwfmeakin@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
