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

Yuri Gaevsky duke at openjdk.org
Tue Jul 15 14:05:25 UTC 2025


On Tue, 15 Jul 2025 08:11:28 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:
> 
>   simplified arrays_hashcode_v() to be closer to VLA and use less general-purpose registers; minor cosmetic changes

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 3 -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   30   11.297 ± 0.021  ns/op
ArraysHashCode.ints       5  avgt   30   28.907 ± 0.117  ns/op
ArraysHashCode.ints      10  avgt   30   41.196 ± 0.218  ns/op
ArraysHashCode.ints      20  avgt   30   68.403 ± 0.118  ns/op
ArraysHashCode.ints      30  avgt   30   88.732 ± 0.506  ns/op
ArraysHashCode.ints      40  avgt   30  115.166 ± 0.103  ns/op
ArraysHashCode.ints      50  avgt   30  136.047 ± 0.487  ns/op
ArraysHashCode.ints      60  avgt   30  161.985 ± 0.193  ns/op
ArraysHashCode.ints      70  avgt   30  170.613 ± 0.506  ns/op
ArraysHashCode.ints      80  avgt   30  194.457 ± 0.547  ns/op
ArraysHashCode.ints      90  avgt   30  207.872 ± 0.305  ns/op
ArraysHashCode.ints     100  avgt   30  231.960 ± 0.338  ns/op
ArraysHashCode.ints     200  avgt   30  448.387 ± 1.186  ns/op
ArraysHashCode.ints     300  avgt   30  655.308 ± 0.146  ns/op
--- -XX:-UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   30   11.295 ± 0.022  ns/op
ArraysHashCode.ints       5  avgt   30   24.426 ± 0.005  ns/op
ArraysHashCode.ints      10  avgt   30   35.734 ± 0.034  ns/op
ArraysHashCode.ints      20  avgt   30   58.876 ± 0.015  ns/op
ArraysHashCode.ints      30  avgt   30   82.964 ± 0.271  ns/op
ArraysHashCode.ints      40  avgt   30  105.866 ± 0.027  ns/op
ArraysHashCode.ints      50  avgt   30  129.875 ± 0.230  ns/op
ArraysHashCode.ints      60  avgt   30  153.074 ± 0.331  ns/op
ArraysHashCode.ints      70  avgt   30  176.633 ± 0.072  ns/op
ArraysHashCode.ints      80  avgt   30  199.799 ± 0.049  ns/op
ArraysHashCode.ints      90  avgt   30  223.666 ± 0.087  ns/op
ArraysHashCode.ints     100  avgt   30  247.609 ± 0.447  ns/op
ArraysHashCode.ints     200  avgt   30  481.884 ± 0.612  ns/op
ArraysHashCode.ints     300  avgt   30  716.558 ± 0.197  ns/op
--- -XX:+UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   30   11.284 ± 0.016  ns/op
ArraysHashCode.ints       5  avgt   30   21.298 ± 0.009  ns/op
ArraysHashCode.ints      10  avgt   30   33.820 ± 0.007  ns/op
ArraysHashCode.ints      20  avgt   30   58.937 ± 0.061  ns/op
ArraysHashCode.ints      30  avgt   30   84.086 ± 0.132  ns/op
ArraysHashCode.ints      40  avgt   30   99.785 ± 1.721  ns/op
ArraysHashCode.ints      50  avgt   30  125.043 ± 1.614  ns/op
ArraysHashCode.ints      60  avgt   30  147.438 ± 0.266  ns/op
ArraysHashCode.ints      70  avgt   30  120.624 ± 1.068  ns/op
ArraysHashCode.ints      80  avgt   30  144.821 ± 1.065  ns/op
ArraysHashCode.ints      90  avgt   30  171.626 ± 0.052  ns/op
ArraysHashCode.ints     100  avgt   30  140.918 ± 0.031  ns/op
ArraysHashCode.ints     200  avgt   30  223.500 ± 1.228  ns/op
ArraysHashCode.ints     300  avgt   30  316.135 ± 0.361  ns/op

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

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


More information about the hotspot-compiler-dev mailing list