|
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, v43.0.0, 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, v39.0.1, v39.0.0, v38.0.4, v37.0.3, v36.0.3, v24.0.5, v38.0.3, v38.0.2, v38.0.1, v37.0.2, v37.0.1, v37.0.0, v36.0.2, v36.0.1, v36.0.0, v35.0.0, v24.0.4, v33.0.2, v34.0.2, v34.0.1, v33.0.1, v24.0.3, v32.0.1, v34.0.0 |
|
| #
2c1e1155 |
| 02-Jun-2025 |
Saúl Cabrera <[email protected]> |
winch(aarch64): Simplify constant handling, part 1/N (#10888)
* winch(aarch64): implify constant handling, part 1/N
This commit is the first step toward simplifying constant handling, particularly
winch(aarch64): Simplify constant handling, part 1/N (#10888)
* winch(aarch64): implify constant handling, part 1/N
This commit is the first step toward simplifying constant handling, particularly for the aarch64 backend.
The main highlights in this patch are:
* Introduction of `ConstantPool` implemenetation on top of Cranlift primitives. The implemettaion is identical to the existing for x64, however, it's abstracted so that it can be easily consumed from any existing backend. * Usage of the constant pool from aarch64, which simplifies the loading of constants, particularly floating point constants.
The main motivation behind this change is to _eventually_ detach the implicit usage of the scatch register from constant loading as much as possible, reducing the possibility of subtle bugs (like the one described in https://github.com/bytecodealliance/wasmtime/pull/10829).
Note that I have a work-in-progress branch from where all these changes are cherry picked from, to make everything easier to review.
A side effect of this change, is the improvement to the code generation involving floating point constants. Prior to this change, multiple moves were involved, with this patch, at most 1 move is required and at worst one load is required.
* Update disassembly tests
* Apply refactored constant handling on top of shared float min/max implementation
* `fmt`
show more ...
|