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

Mikhail Ablakatov duke at openjdk.org
Fri Sep 27 10:40:41 UTC 2024


On Thu, 26 Sep 2024 12:32:08 GMT, Mikhail Ablakatov <duke at openjdk.org> wrote:

>> Mikhail Ablakatov has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   cleanup: add a description for intpow()
>>   
>>   Co-authored-by: Andrew Haley <aph-open at littlepinkcloud.com>
>
> src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp line 5445:
> 
>> 5443:         __ uxtl(vhalf0, Assembler::T4S, vdata0, Assembler::T4H);
>> 5444:       }
>> 5445:       __ addv(vmul0, Assembler::T4S, vmul0, vhalf0);
> 
> I was advised to use a single `SADDW`/`UADDW` instruction instead of the current pair of `SXTL`/`UXTL` followed by `ADD`. It seems this was likely overlooked because the `Assembler` class is missing the corresponding instructions. I am adding these instructions and updating the implementation accordingly.

Done by https://github.com/openjdk/jdk/pull/18487/commits/03849d62254d3bbf23b01659d8fd4a27fa1c019e .

This improves the performance for `T_BOOLEAN`/`T_BYTE` and `T_CHAR`/`T_SHORT` arrays compared to the previous implementation (https://github.com/openjdk/jdk/pull/18487/commits/bfa93695b7813678936d4d25ed02866353eaae81).  

![03849d6-v2-bytes](https://github.com/user-attachments/assets/f86eddaf-d53d-47c6-9f0f-05056e232c8c)
![03849d6-v2-shorts](https://github.com/user-attachments/assets/f4461e94-fd71-4502-8d24-5905572ffff5)


[ArraysHashCode-v2-03849d6.txt](https://github.com/user-attachments/files/17162865/ArraysHashCode-v2-03849d6.txt)

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

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


More information about the hotspot-dev mailing list