RFR: 8351666: [PPC64] Make non-volatile VectorRegisters available for C2 register allocation [v2]
Martin Doerr
mdoerr at openjdk.org
Tue Apr 8 13:02:24 UTC 2025
> This PR makes the non-volatile VectorRegisters available for C2's register allocation.
>
> I had to implement the VectorRegisters properly (4 VM Regs) like on other platforms. The old version has run into assertions and looked strange.
>
> The non-volatile VectorRegisters are now saved when entering Java: call_stub and upcall_stubs.
> I have rewritten the save and restore functions and used them for both. Then, I have removed code which has become dead. I only save and restore them if C2 uses the vector instructions (controlled by `SuperwordUseVSX`).
> I have moved the non-volatile spill area out of the entry_frame_locals because it has a variable size, now.
>
> The stack area for all non-volatile registers has become larger than the 288 Bytes which are allowed to be used below the SP (specified by the ABI). Therefore, I had to rewrite the call_stub sequence significantly. We need to push the new frame before saving the registers, now.
>
> Saving and restoring the FP registers is not needed in the slow signature handler which also uses the save and restore code for non-volatile registers.
Martin Doerr has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
- Merge remote-tracking branch 'origin' into 8351666_PPC64_nv_VRs
- C2: Specify VSR52-63 as SOE and revert commit 2.
- Fix register classification.
- Update Copyright headers.
- Add missing alignment in upcall stub frames.
- Avoid redundant nv VR spill code in CRC stubs.
- 8351666: [PPC64] Make non-volatile VectorRegisters available for C2 register allocation
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/23987/files
- new: https://git.openjdk.org/jdk/pull/23987/files/c19272c9..89a1e9d9
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=23987&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=23987&range=00-01
Stats: 124047 lines in 2971 files changed: 52627 ins; 59524 del; 11896 mod
Patch: https://git.openjdk.org/jdk/pull/23987.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/23987/head:pull/23987
PR: https://git.openjdk.org/jdk/pull/23987
More information about the hotspot-dev
mailing list