RFR: 8322770: Implement C2 VectorizedHashCode on AArch64 [v10]

Mikhail Ablakatov duke at openjdk.org
Mon Sep 23 15:55:01 UTC 2024


On Fri, 20 Sep 2024 09:50:36 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> Mikhail Ablakatov has updated the pull request incrementally with four additional commits since the last revision:
>> 
>>  - cleanup: use switch-case instead of if-else statements and ternary operators
>>  - Don't try align basic blocks as it brings no measurable performance benefits
>>  - fixup: rename the newly added Vector-Scalar mulv to mulvs
>>  - fixup: fix Windows build by not using RELATIVE as an identifier
>
> src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp line 140:
> 
>> 138: }
>> 139: 
>> 140: void C2_MacroAssembler::arrays_hashcode_elload(Register dst, Address src, BasicType eltype) {
> 
> This method has nothing to do with either arrays nor hashcode. Looking at class `Assembler`, it would make sense to have a general-purpose load that takes a `BasicType`. 
> 
> We already have this `Assembler` function:
> 
> `  void ld_st2(Register Rt, const Address &adr, int size, int op, int V = 0)`
> 
> where two bits of `op` gives us store and three versions of sign extension.
> 
> Please use `ld_st2` to define a general-purpose `MacroAssembler::load` function with this set of arguments.
> It was perhaps a historic mistake of ours not to use an assembler function with the size and the signedness of an operand as an argument to ldr/str.

Added by https://github.com/openjdk/jdk/pull/18487/commits/091eecc5c2fd809ded7484baf9fea319732d9408 . Basically, I just used your older suggestion from here with a minor adjustment for `T_INT`: https://github.com/mikabl-arm/jdk/commit/3a52c7f89c293b79559201149f3159d5a8c831b6#r145057214

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18487#discussion_r1771711060


More information about the hotspot-dev mailing list