Skip to content

Conversation

@david-arm
Copy link
Contributor

We sometimes see sequences like this:

store %123(...b), [addr + 8]
store %124(...q), [addr]

The existing storepair simplify code requires that the stored registers be physical GP registers, presumably because the lowering for storepair/storepairl cannot handle FP/SIMD regs. However, during register allocation we materialise these constants and end up with the sequence:

ldimmb ... => x0
store x0, [addr + 8]
ldimmq ... => x0
store x0, [addr]

which then makes it very difficult to combine these into storepairs in the post-regalloc simplify pass. This PR permits combining pairs of stores prior to regalloc, provided we can show they are either:

  1. A GP physical register, or
  2. An integer constant that will be materialised into a GP reg.

We sometimes see sequences like this:

store %123(...b), [addr + 8]
store %124(...q), [addr]

The existing storepair simplify code requires that the stored
registers be physical GP registers, presumably because the
lowering for storepair/storepairl cannot handle FP/SIMD regs.
However, during register allocation we materialise these
constants and end up with the sequence:

ldimmb ... => x0
store x0, [addr + 8]
ldimmq ... => x0
store x0, [addr]

which then makes it very difficult to combine these into
storepairs in the post-regalloc simplify pass. This PR permits
combining pairs of stores prior to regalloc, provided we can
show they are either:

1. A GP physical register, or
2. An integer constant that will be materialised into a GP reg.
@meta-cla meta-cla bot added the CLA Signed label Nov 27, 2025
@meta-codesync
Copy link

meta-codesync bot commented Nov 27, 2025

@facebook-github-bot has imported this pull request. If you are a Meta employee, you can view this in D87975171. (Because this pull request was imported automatically, there will not be any future comments.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant