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