RFR: 8322174: RISC-V: C2 VectorizedHashCode RVV Version [v11]

Yuri Gaevsky duke at openjdk.org
Mon Aug 4 08:50:06 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 c558db0 shows better numbers due to movement of reduction-sum instruction out of vectorized loop:

bpif3-16g% ( for i in "-XX:DisableIntrinsic=_vectorizedHashCode" "-XX:-UseRVV" "-XX:+UseRVV" ; \
    do ( echo "--- ${i} ---" && ${JAVA_HOME}/bin/java  -jar benchmarks.jar  \
        --jvmArgs="-XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions ${i}" \
        org.openjdk.bench.java.lang.ArraysHashCode.ints  \
        -p size=1,5,10,20,30,40,50,60,70,80,90,100,200,300 \
        -f 1 -r 1 -w 1 -wi 10 -i 10 2>&1 | tail -15 ) done )
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   10   11.275 ± 0.003  ns/op
ArraysHashCode.ints       5  avgt   10   28.820 ± 0.020  ns/op
ArraysHashCode.ints      10  avgt   10   41.107 ± 0.413  ns/op
ArraysHashCode.ints      20  avgt   10   67.941 ± 0.267  ns/op
ArraysHashCode.ints      30  avgt   10   88.906 ± 0.352  ns/op
ArraysHashCode.ints      40  avgt   10  114.968 ± 0.301  ns/op
ArraysHashCode.ints      50  avgt   10  135.744 ± 0.575  ns/op
ArraysHashCode.ints      60  avgt   10  162.996 ± 0.219  ns/op
ArraysHashCode.ints      70  avgt   10  170.975 ± 0.368  ns/op
ArraysHashCode.ints      80  avgt   10  192.728 ± 0.236  ns/op
ArraysHashCode.ints      90  avgt   10  207.485 ± 0.205  ns/op
ArraysHashCode.ints     100  avgt   10  232.791 ± 0.177  ns/op
ArraysHashCode.ints     200  avgt   10  446.733 ± 0.396  ns/op
ArraysHashCode.ints     300  avgt   10  653.086 ± 0.389  ns/op
--- -XX:-UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   10   11.281 ± 0.003  ns/op
ArraysHashCode.ints       5  avgt   10   24.469 ± 0.008  ns/op
ArraysHashCode.ints      10  avgt   10   35.697 ± 0.014  ns/op
ArraysHashCode.ints      20  avgt   10   58.906 ± 0.060  ns/op
ArraysHashCode.ints      30  avgt   10   82.734 ± 0.023  ns/op
ArraysHashCode.ints      40  avgt   10  105.856 ± 0.017  ns/op
ArraysHashCode.ints      50  avgt   10  129.656 ± 0.033  ns/op
ArraysHashCode.ints      60  avgt   10  152.825 ± 0.057  ns/op
ArraysHashCode.ints      70  avgt   10  176.630 ± 0.077  ns/op
ArraysHashCode.ints      80  avgt   10  199.810 ± 0.118  ns/op
ArraysHashCode.ints      90  avgt   10  223.571 ± 0.026  ns/op
ArraysHashCode.ints     100  avgt   10  247.887 ± 0.387  ns/op
ArraysHashCode.ints     200  avgt   10  481.636 ± 0.163  ns/op
ArraysHashCode.ints     300  avgt   10  716.446 ± 0.402  ns/op
--- -XX:+UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   10   11.331 ± 0.020  ns/op
ArraysHashCode.ints       5  avgt   10   21.309 ± 0.004  ns/op
ArraysHashCode.ints      10  avgt   10   33.858 ± 0.017  ns/op
ArraysHashCode.ints      20  avgt   10   58.878 ± 0.025  ns/op
ArraysHashCode.ints      30  avgt   10   83.918 ± 0.016  ns/op
ArraysHashCode.ints      40  avgt   10  110.763 ± 0.184  ns/op
ArraysHashCode.ints      50  avgt   10  135.274 ± 0.027  ns/op
ArraysHashCode.ints      60  avgt   10  157.186 ± 0.034  ns/op
ArraysHashCode.ints      70  avgt   10  121.519 ± 0.073  ns/op
ArraysHashCode.ints      80  avgt   10  142.846 ± 0.114  ns/op
ArraysHashCode.ints      90  avgt   10  167.906 ± 0.173  ns/op
ArraysHashCode.ints     100  avgt   10  130.926 ± 0.204  ns/op
ArraysHashCode.ints     200  avgt   10  189.173 ± 0.100  ns/op
ArraysHashCode.ints     300  avgt   10  237.364 ± 0.107  ns/op

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

PR Comment: https://git.openjdk.org/jdk/pull/17413#issuecomment-3149681739


More information about the hotspot-compiler-dev mailing list