RFR: 8322174: RISC-V: C2 VectorizedHashCode RVV Version [v16]
Yuri Gaevsky
duke at openjdk.org
Wed Aug 6 10:13:51 UTC 2025
On Tue, 5 Aug 2025 12:53:24 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 with a new target base due to a merge or a rebase. The pull request now contains 17 commits:
>
> - Merge master
> - replaced vmul_vv + vadd_vv by vmadd_vv
> - returned lmul==m4
> - fixed error made for prevoius lmul-m1 experiment
> - make an experiment with lmul==1 instead of lmul==4.
> - move vredsum_vs out of VEC_LOOP to improve performance
> - - removed tail processing with RVV instructions as simple scalar loop provides in general better results
> - simplified arrays_hashcode_v() to be closer to VLA and use less general-purpose registers; minor cosmetic changes
> - change slli+add sequence to shadd
> - reorder instructions to make RVV instructions contiguous
> - ... and 7 more: https://git.openjdk.org/jdk/compare/ba0ae4cb...e7fac6c7
`bbcd1ec`:
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.293 ± 0.019 ns/op
ArraysHashCode.ints 5 avgt 30 28.861 ± 0.052 ns/op
ArraysHashCode.ints 10 avgt 30 41.105 ± 0.170 ns/op
ArraysHashCode.ints 20 avgt 30 68.275 ± 0.028 ns/op
ArraysHashCode.ints 30 avgt 30 89.379 ± 0.659 ns/op
ArraysHashCode.ints 40 avgt 30 115.111 ± 0.157 ns/op
ArraysHashCode.ints 50 avgt 30 136.252 ± 0.522 ns/op
ArraysHashCode.ints 60 avgt 30 161.913 ± 0.276 ns/op
ArraysHashCode.ints 70 avgt 30 170.858 ± 0.367 ns/op
ArraysHashCode.ints 80 avgt 30 195.566 ± 0.288 ns/op
ArraysHashCode.ints 90 avgt 30 208.160 ± 0.527 ns/op
ArraysHashCode.ints 100 avgt 30 232.718 ± 0.688 ns/op
ArraysHashCode.ints 200 avgt 30 448.118 ± 1.079 ns/op
ArraysHashCode.ints 300 avgt 30 656.164 ± 0.647 ns/op
ArraysHashCode.ints 1000 avgt 30 2139.643 ± 0.729 ns/op
ArraysHashCode.ints 10000 avgt 30 23584.704 ± 40.276 ns/op
--- -XX:-UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.282 ± 0.010 ns/op
ArraysHashCode.ints 5 avgt 30 23.216 ± 0.042 ns/op
ArraysHashCode.ints 10 avgt 30 33.251 ± 0.055 ns/op
ArraysHashCode.ints 20 avgt 30 50.740 ± 0.010 ns/op
ArraysHashCode.ints 30 avgt 30 70.871 ± 0.100 ns/op
ArraysHashCode.ints 40 avgt 30 88.330 ± 0.026 ns/op
ArraysHashCode.ints 50 avgt 30 108.937 ± 0.097 ns/op
ArraysHashCode.ints 60 avgt 30 125.877 ± 0.024 ns/op
ArraysHashCode.ints 70 avgt 30 146.213 ± 0.166 ns/op
ArraysHashCode.ints 80 avgt 30 163.545 ± 0.072 ns/op
ArraysHashCode.ints 90 avgt 30 183.957 ± 0.371 ns/op
ArraysHashCode.ints 100 avgt 30 201.147 ± 0.322 ns/op
ArraysHashCode.ints 200 avgt 30 389.061 ± 0.168 ns/op
ArraysHashCode.ints 300 avgt 30 576.751 ± 0.091 ns/op
ArraysHashCode.ints 1000 avgt 30 1994.798 ± 116.508 ns/op
ArraysHashCode.ints 10000 avgt 30 20482.232 ± 40.742 ns/op
--- -XX:+UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.291 ± 0.019 ns/op
ArraysHashCode.ints 5 avgt 30 23.245 ± 0.104 ns/op
ArraysHashCode.ints 10 avgt 30 38.872 ± 0.061 ns/op
ArraysHashCode.ints 20 avgt 30 70.267 ± 0.127 ns/op
ArraysHashCode.ints 30 avgt 30 102.054 ± 0.478 ns/op
ArraysHashCode.ints 40 avgt 30 71.729 ± 0.890 ns/op
ArraysHashCode.ints 50 avgt 30 105.017 ± 0.726 ns/op
ArraysHashCode.ints 60 avgt 30 136.776 ± 0.407 ns/op
ArraysHashCode.ints 70 avgt 30 77.465 ± 0.204 ns/op
ArraysHashCode.ints 80 avgt 30 106.172 ± 1.303 ns/op
ArraysHashCode.ints 90 avgt 30 137.791 ± 1.098 ns/op
ArraysHashCode.ints 100 avgt 30 74.734 ± 0.115 ns/op
ArraysHashCode.ints 200 avgt 30 116.477 ± 0.015 ns/op
ArraysHashCode.ints 300 avgt 30 161.045 ± 1.155 ns/op
ArraysHashCode.ints 1000 avgt 30 336.027 ± 0.953 ns/op
ArraysHashCode.ints 10000 avgt 30 5427.369 ± 37.820 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17413#issuecomment-3159077967
More information about the hotspot-compiler-dev
mailing list