RFR: 8331861: [PPC64] Implement load / store assembler functions which take an Address object

Varada M varadam at openjdk.org
Tue Oct 29 18:22:17 UTC 2024


On Fri, 25 Oct 2024 10:09:01 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:

>> Idea: Use the `RegisterOrConstant` version. This covers all cases including large offset and index. E.g.
>> `inline void stw(  Register d, Address &a, Register tmp = noreg);`
>> 
>> inline void Assembler::stw(  Register d, Address &a, Register tmp) {
>>   stw(d, a.index() != noreg ? RegisterOrConstant(a.index()) : RegisterOrConstant(a.disp()), a.base(), tmp);
>> }
>> 
>> I'd move them into a separate section.
>
>> @TheRealMDoerr are floating-point load/store instructions out of scope for this PR?
>> 
>> I see couple of use cases:
>> 
>> ```c++
>> ./c1_LIRAssembler_ppc.cpp:591:        __ stfd(rsrc, addr.disp(), addr.base());
>> ./c1_LIRAssembler_ppc.cpp:615:        __ stfd(rsrc, addr.disp(), addr.base());
>> ```
> 
> That could be done, too, but floating point instructions are so rarely used, that we could skip them.

Thanks @TheRealMDoerr @offamitkumar

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

PR Comment: https://git.openjdk.org/jdk/pull/21492#issuecomment-2445022457


More information about the hotspot-compiler-dev mailing list