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

Amit Kumar amitkumar at openjdk.org
Mon Oct 28 16:40:21 UTC 2024


On Tue, 15 Oct 2024 18:18:57 GMT, Martin Doerr <mdoerr at openjdk.org> wrote:

>> Load and store assembly instructions which takes Address object as argument. 
>> 
>> Tier 1 testing successful on linux-ppc64le and aix-ppc (fastdebug level)
>> 
>> JBS : [JDK-8331861](https://bugs.openjdk.org/browse/JDK-8331861)
>
> 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: 

./c1_LIRAssembler_ppc.cpp:591:        __ stfd(rsrc, addr.disp(), addr.base());
./c1_LIRAssembler_ppc.cpp:615:        __ stfd(rsrc, addr.disp(), addr.base());

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

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


More information about the hotspot-compiler-dev mailing list