|
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 ...
|