History log of /wasmtime-44.0.1/winch/codegen/src/constant_pool.rs (Results 1 – 1 of 1)
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, 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 ...