hhvm icon indicating copy to clipboard operation
hhvm copied to clipboard

AArch64: Use storepair more when storing out constant values

Open david-arm opened this issue 3 weeks ago • 1 comments

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.

david-arm avatar Nov 27 '25 11:11 david-arm

@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.)

meta-codesync[bot] avatar Nov 27 '25 11:11 meta-codesync[bot]