Cranelift: remove de-morgan mid-end rules (speedup up to 39.64%)#12127
Merged
Conversation
Subscribe to Label ActionDetailsThis issue or pull request has been labeled: "cranelift", "isle"Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
Contributor
Author
|
It seems like the CI didn't work because of the failure of npm registry server. |
Merged
via the queue into
bytecodealliance:main
with commit Dec 5, 2025
39f8c4e
88 of 90 checks passed
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Dec 28, 2025
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Dec 30, 2025
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Dec 30, 2025
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Dec 30, 2025
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 3, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 4, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 4, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 4, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 4, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 5, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Jan 5, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 9, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 9, 2026
This reverts commit ba9c185.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 9, 2026
This reverts commit ba9c185.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 9, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 9, 2026
This reverts commit ba9c185.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 12, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 12, 2026
This reverts commit 39f8c4e.
bongjunj
added a commit
to prosyslab/wasmtime
that referenced
this pull request
Mar 12, 2026
This reverts commit 39f8c4e.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This resolves #12106.
The following table shows the data backing this patch, where the removal of the canonicalizing de-morgan rules boosts execution and compilation performance for
keccakbenchmark. This is primarily because it confuses our e-graph based optimizer which selects the fastest expression among equivalent expressions collected by performing (bounded) equality saturation using the rules defined in ISLE. The selection happens during elaboration on each basic block where the cost model evaluates each expression by accumulating costs of instructions in each basic block. Each instruction has an assigned cost for its opcode. This can be confirmed by the following codes:wasmtime/cranelift/codegen/src/egraph/elaborate.rs
Lines 222 to 354 in 9dc6a7d
wasmtime/cranelift/codegen/src/egraph/cost.rs
Lines 73 to 173 in 9dc6a7d
However, in a large sequential function with only a single block, the cost can saturate to infinity, where our cost model cannot decide the fastest expression, ending up selecting suboptimal expressions.