History log of /wasmtime-44.0.1/cranelift/codegen/src/opts/bitops.isle (Results 1 – 25 of 30)
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
# 4d4e9033 02-Apr-2026 Hyunbin Kim <[email protected]>

[Cranelift] add simplification rules (#12937)


# 15783254 01-Apr-2026 Hyunbin Kim <[email protected]>

[Cranelift] add simplification rules (#12926)

[Cranelift] Add arithmetic simplification rules


Revision tags: v43.0.0
# 691bb4f0 16-Mar-2026 Hyunbin Kim <[email protected]>

[Cranelift] add bit operation simplification rules (#12782)

* [Cranelift] add bit operation simplification rules

* [Cranelift] filetest error resolve


# 8f8b58e9 09-Mar-2026 Hyunbin Kim <[email protected]>

Cranelift: bitops add (#12738)


# 557ef730 05-Mar-2026 Hyunbin Kim <[email protected]>

[Cranelift] dual add (#12731)


# dfc36b61 04-Mar-2026 Hyunbin Kim <[email protected]>

cranelift: bitops folding added (#12715)


# f6c69b07 27-Feb-2026 Hyunbin Kim <[email protected]>

[Cranelift] (x & y) | ~(x ^ y) => ~(x ^ y) (#12686)

* cranelift: simplify bor(and, not(xor)) to not(xor)

* cranelift: extend bor(and, not(xor)) simplify coverage


Revision tags: v42.0.1, v41.0.4, v42.0.0, v40.0.4, v36.0.6, v24.0.6, 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
# 39f8c4ea 05-Dec-2025 Bongjun Jang <[email protected]>

remove demorgan rules (#12127)


Revision tags: v39.0.1, v39.0.0, v38.0.4, v37.0.3, v36.0.3, v24.0.5
# 73fe75e7 07-Nov-2025 Bongjun Jang <[email protected]>

[Cranelift] `(z & x) ^ (z & y) => z & (x ^ y)` (#12000)


Revision tags: v38.0.3, v38.0.2, v38.0.1, v37.0.2, v37.0.1, v37.0.0
# 3de15c01 11-Sep-2025 Bongjun Jang <[email protected]>

[Cranelift] add commutative cases (follow-up of #11642) (#11663)

* [Cranelift] add opts and tests

* [Cranelift] add runtests

* [Cranelift] add commutative cases

* [Cranelift] add filetests


# 6139613d 11-Sep-2025 Bongjun Jang <[email protected]>

[Cranelift] fold `(or (and ..) (not ..)` (#11641)

* [Cranelift] add opts and tests

* [Cranelift] add runtests


# 76cd1aca 11-Sep-2025 Bongjun Jang <[email protected]>

[Cranelift] `(X ^ Y) ^ Y --> X`, `(X & Y) | X --> X` (#11680)

* [Cranelift] add opts and tests

* [Cranelift] update

* [Cranelift] add runtests

* [Cranelift] add opts and tests

* [Cranelift] add

[Cranelift] `(X ^ Y) ^ Y --> X`, `(X & Y) | X --> X` (#11680)

* [Cranelift] add opts and tests

* [Cranelift] update

* [Cranelift] add runtests

* [Cranelift] add opts and tests

* [Cranelift] add commutative cases

* [Cranelift] add runtests

show more ...


# d23f55ad 10-Sep-2025 Bongjun Jang <[email protected]>

[Cranelift] `(X | Y) + (X & Y) --> X + Y`, `(X & Y) + (X ^ Y) --> X | Y` (#11647)

* [Cranelift] add opts and tests

* [Cranelift] add opts and tests

* [Cranelift] update tests

* [Cranelift] add ru

[Cranelift] `(X | Y) + (X & Y) --> X + Y`, `(X & Y) + (X ^ Y) --> X | Y` (#11647)

* [Cranelift] add opts and tests

* [Cranelift] add opts and tests

* [Cranelift] update tests

* [Cranelift] add runtests

* [Cranelift] fix tests

* [Cranelift] add runtests

* [Cranelift] add commutative cases

* [Cranelift] add egraph filetests

show more ...


# a740e343 09-Sep-2025 Bongjun Jang <[email protected]>

[Cranelift] fold `(and (xor (not ..) ..) ..)` (#11642)

* [Cranelift] add opts and tests

* [Cranelift] add runtests


# ddfd56e6 29-Aug-2025 Bongjun Jang <[email protected]>

[ISLE] add opt (#11556)


# deed903d 28-Aug-2025 Bongjun Jang <[email protected]>

[ISLE] add opt and tests (#11555)


# 73b1e317 27-Aug-2025 Bongjun Jang <[email protected]>

[Cranelift] `(x | y) ^ (x & y) --> (x ^ y)` (#11527)

* [ISLE] add an opt and its test

* [ISLE] add runtests for new opt


Revision tags: v36.0.2, v36.0.1, v36.0.0, v35.0.0, v24.0.4, v33.0.2, v34.0.2
# 778dd02f 02-Jul-2025 Bongjun Jang <[email protected]>

[Cranelift] `(x & y) ^ (x ^ y) --> x | y` (#11173)

* add rule

* add tests


Revision tags: v34.0.1, v33.0.1, v24.0.3, v32.0.1, v34.0.0
# cfe17cb1 19-Jun-2025 Nick Fitzgerald <[email protected]>

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 crate

This automatically g

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 crate

This automatically generates operations and conversions for integer types for
use 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 `<ty>_unwrapping_<op>` to `<ty>_<op>`

show more ...


Revision tags: v33.0.0, v32.0.0, v31.0.0, v30.0.2, v30.0.1, v30.0.0, v29.0.1, v29.0.0, v28.0.1, 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, 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, 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
# f8c9f671 19-Dec-2023 scottmcm <[email protected]>

More spaceship patterns (#7702)


# 36b10914 18-Dec-2023 scottmcm <[email protected]>

Cranelift: use more `iconst_[su]` in opts, notably enabling some i128 patterns (#7693)

* Cranelift: use more `iconst_[su]` in opts, notably re-enabling some i128 cases

`iconst_u` and `iconst_s` sup

Cranelift: use more `iconst_[su]` in opts, notably enabling some i128 patterns (#7693)

* Cranelift: use more `iconst_[su]` in opts, notably re-enabling some i128 cases

`iconst_u` and `iconst_s` support `$I128`, so we can now enable these even though they had to be excluded before to avoid generating `iconst.i128` that doesn't exist.

* Update for PR feedback

show more ...


# 2a367f4e 12-Dec-2023 scottmcm <[email protected]>

Cranelift: Add iconst shorthand to simplify ISLE opts (#7670)

* Demote `simm32` and `uimm8` to lowering ISLE only

There seems to be nothing in opt ISLE that actually wanted them, just something tha

Cranelift: Add iconst shorthand to simplify ISLE opts (#7670)

* Demote `simm32` and `uimm8` to lowering ISLE only

There seems to be nothing in opt ISLE that actually wanted them, just something that's more consistently done with using a 64-bit type to read from an Imm64.

And `simm32` feels like it's probably wrong to me -- `simm32` can't actually match `-1_i32` -- but I'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

show more ...


# 76f71d83 07-Dec-2023 scottmcm <[email protected]>

Cranelift: More simplification opts for `iadd`/`isub` (#7654)


Revision tags: v15.0.1, v15.0.0
# 8e1b8ba4 02-Nov-2023 Afonso Bordado <[email protected]>

egraphs: Merge consecutive shifts and rotates (#7453)

* egraphs: Use `ty_shift_mask` where applicable

* cranelift: Move `ty_shift_mask` into prelude

* egraphs: Add consecutive shift rules

* egrap

egraphs: Merge consecutive shifts and rotates (#7453)

* egraphs: Use `ty_shift_mask` where applicable

* cranelift: Move `ty_shift_mask` into prelude

* egraphs: Add consecutive shift rules

* egraphs: Support overflow rules for i128

* egraphs: Improve rotate unification rules

* egraphs: Add oposite rotate rules

* egraphs: Allow merging rotates with different type shift amounts

* egraphs: Reorganize rotate rules

* egraphs: Clarify shift identities

Co-Authored-By: Nick Fitzgerald <[email protected]>

---------

Co-authored-by: Nick Fitzgerald <[email protected]>

show more ...


12