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