Skip to content

JIT: Missing support for pre-indexed addressing on arm64 #105193

Open
@jakobbotsch

Description

@jakobbotsch

Pre-indexed addressing with writeback allows computing x = x + c; var y = *x in a single instruction on arm64. We should add support for this.

The post-indexed addressing mode was added as an emitter peephole in #105181. #105185 adds a lowering transformation that tries to set the IR up to produce patterns that are amenable to be replaced by the peephole in the emitter. The pre-indexing can work in a similar way: run the peephole when we are going to emit a load/store instruction and try to combine it with a previous add/sub. In lowering try to look for a previous GT_ADD/GT_SUB RMW to make adjacent when we see an indir. One problematic thing there is that we currently do not have a convenient list of the previous RMW ADD/SUB nodes, so we either need to search for longer (probably expensive) or we need to add such a list.

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions