RFR: 8351666: [PPC64] Make non-volatile VectorRegisters available for C2 register allocation [v4]

Martin Doerr mdoerr at openjdk.org
Wed Apr 23 20:50:00 UTC 2025


On Wed, 23 Apr 2025 20:23:14 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

>> It might be that currently in master only VSR32, VSR36, VSR40, ... are actually used.
>
>> It might be that currently in master only VSR32, VSR36, VSR40, ... are actually used.
> 
> I've made an experiment asserting that the target register of a LoadVector is a multiple of 4:
> 
> https://github.com/reinrich/jdk/blob/a860064031213e3f334fba04b7314eb054d286a1/src/hotspot/cpu/ppc/ppc.ad#L5403
> 
> I've run
> 
> make test TEST="hotspot_vector_1 hotspot:tier1 jdk:tier1"
> 
> Without failure.
> 
> Similar assertion on top of this pr: https://github.com/reinrich/jdk/commit/39b8c1f3583cb34de87080351ef53beeb4e78a88
> 
> The assertion failed already during build (that's why I added `!UseNewCode`) and also running the tests.
> 
> So only every 4th vector register is actually used because the registers aren't declared as sequence of 4 VMRegs. Should be fixed also in older releases.

Interesting! Thanks for figuring that out!
It's already too late for JDK 24. And JDK 17 and 21 are rather stable releases. I guess this issue is not critical enough for backporting to 17. Maybe we can discuss fixing it in 21.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23987#discussion_r2056850439


More information about the hotspot-dev mailing list