RFR: 8322174: RISC-V: C2 VectorizedHashCode RVV Version [v11]
Yuri Gaevsky
duke at openjdk.org
Mon Aug 4 13:40:38 UTC 2025
On Mon, 4 Aug 2025 08:46:54 GMT, Yuri Gaevsky <duke at openjdk.org> wrote:
>> The patch adds possibility to use RVV instructions for faster vectorizedHashCode calculations on RVV v1.0.0 capable hardware.
>>
>> Testing: hotspot/jtreg/compiler/ under QEMU-8.1 with RVV v1.0.0.
>
> Yuri Gaevsky has updated the pull request incrementally with one additional commit since the last revision:
>
> move vredsum_vs out of VEC_LOOP to improve performance
The results of [suggested experiment](https://github.com/openjdk/jdk/pull/17413#discussion_r2244179129) with lmul==1:
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 10 11.271 ± 0.002 ns/op
ArraysHashCode.ints 5 avgt 10 28.811 ± 0.004 ns/op
ArraysHashCode.ints 10 avgt 10 40.720 ± 0.022 ns/op
ArraysHashCode.ints 20 avgt 10 68.195 ± 0.245 ns/op
ArraysHashCode.ints 30 avgt 10 88.203 ± 0.358 ns/op
ArraysHashCode.ints 40 avgt 10 115.552 ± 0.513 ns/op
ArraysHashCode.ints 50 avgt 10 134.724 ± 0.194 ns/op
ArraysHashCode.ints 60 avgt 10 161.800 ± 0.526 ns/op
ArraysHashCode.ints 70 avgt 10 171.443 ± 0.407 ns/op
ArraysHashCode.ints 80 avgt 10 192.710 ± 0.360 ns/op
ArraysHashCode.ints 90 avgt 10 207.956 ± 0.096 ns/op
ArraysHashCode.ints 100 avgt 10 231.261 ± 0.338 ns/op
ArraysHashCode.ints 200 avgt 10 450.309 ± 1.013 ns/op
ArraysHashCode.ints 300 avgt 10 655.367 ± 0.807 ns/op
--- -XX:-UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 10 11.277 ± 0.006 ns/op
ArraysHashCode.ints 5 avgt 10 24.448 ± 0.014 ns/op
ArraysHashCode.ints 10 avgt 10 35.767 ± 0.058 ns/op
ArraysHashCode.ints 20 avgt 10 58.871 ± 0.014 ns/op
ArraysHashCode.ints 30 avgt 10 82.748 ± 0.403 ns/op
ArraysHashCode.ints 40 avgt 10 105.844 ± 0.057 ns/op
ArraysHashCode.ints 50 avgt 10 129.691 ± 0.207 ns/op
ArraysHashCode.ints 60 avgt 10 152.783 ± 0.029 ns/op
ArraysHashCode.ints 70 avgt 10 176.573 ± 0.031 ns/op
ArraysHashCode.ints 80 avgt 10 199.825 ± 0.091 ns/op
ArraysHashCode.ints 90 avgt 10 223.790 ± 0.757 ns/op
ArraysHashCode.ints 100 avgt 10 247.976 ± 0.980 ns/op
ArraysHashCode.ints 200 avgt 10 481.633 ± 0.096 ns/op
ArraysHashCode.ints 300 avgt 10 716.520 ± 0.218 ns/op
--- -XX:+UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 10 11.275 ± 0.003 ns/op
ArraysHashCode.ints 5 avgt 10 21.293 ± 0.007 ns/op
ArraysHashCode.ints 10 avgt 10 80.183 ± 0.081 ns/op
ArraysHashCode.ints 20 avgt 10 92.063 ± 0.032 ns/op
ArraysHashCode.ints 30 avgt 10 103.319 ± 0.009 ns/op
ArraysHashCode.ints 40 avgt 10 98.937 ± 0.015 ns/op
ArraysHashCode.ints 50 avgt 10 120.870 ± 0.042 ns/op
ArraysHashCode.ints 60 avgt 10 128.407 ± 0.048 ns/op
ArraysHashCode.ints 70 avgt 10 145.908 ± 0.059 ns/op
ArraysHashCode.ints 80 avgt 10 134.045 ± 0.043 ns/op
ArraysHashCode.ints 90 avgt 10 154.720 ± 0.048 ns/op
ArraysHashCode.ints 100 avgt 10 173.479 ± 0.040 ns/op
ArraysHashCode.ints 200 avgt 10 261.791 ± 0.100 ns/op
ArraysHashCode.ints 300 avgt 10 353.951 ± 0.126 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17413#issuecomment-3150754134
More information about the hotspot-compiler-dev
mailing list