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

Richard Reingruber rrich at openjdk.org
Wed Apr 9 20:52:35 UTC 2025


On Wed, 9 Apr 2025 10:40:16 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

>> Martin Doerr has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Update Copyright header.
>
> src/hotspot/cpu/ppc/ppc.ad line 261:
> 
>> 259: // ----------------------------
>> 260:   // 1st 32 VSRs are aliases for the FPRs which are already defined above.
>> 261:   reg_def VSR0   (SOC, SOC, Op_VecX, 0, VMRegImpl::Bad());
> 
> I wonder how the old reg_defs worked, e.g. when allocating spill slots. Do you know?
> BTW: You might use vector pair load/stores in `MachSpillCopyNode::implementation()` too.

Ah, I see: it depends on Op_VecX. Op_VecX has 4 slots: https://github.com/openjdk/jdk/blob/7aeaa3c21c1420191fe8ff59e4cf99eae830754d/src/hotspot/share/opto/regmask.hpp#L90-L110

Hm, is it really necessary to model the vector registers as 4 32-bit parts? As you said offline this makes the `RegisterMasks` larger. If so then shouldn't Op_VecS be used?

> src/hotspot/cpu/ppc/stubGenerator_ppc.cpp line 220:
> 
>> 218:       BLOCK_COMMENT("Call frame manager or native entry.");
>> 219:       // Call frame manager or native entry.
>> 220:       assert_different_registers(r_arg_entry, r_top_of_arguments_addr, r_arg_method, r_arg_thread);
> 
> Since you're at it: please adjust the 2 comment lines above: there's no frame manager. We're about to call the interpreter or native entry.
> Also L222 (just remove "on entry ..."), L245. L265

Alternatively create a cleanup RFE for the stale "frame manager" comments.

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

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


More information about the hotspot-dev mailing list