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

Yuri Gaevsky duke at openjdk.org
Tue Jul 15 08:31:48 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.273 ± 0.003  ns/op
ArraysHashCode.ints       5  avgt   30   28.817 ± 0.013  ns/op
ArraysHashCode.ints      10  avgt   30   41.330 ± 0.280  ns/op
ArraysHashCode.ints      20  avgt   30   68.236 ± 0.057  ns/op
ArraysHashCode.ints      30  avgt   30   88.455 ± 0.142  ns/op
ArraysHashCode.ints      40  avgt   30  115.251 ± 0.350  ns/op
ArraysHashCode.ints      50  avgt   30  135.525 ± 0.685  ns/op
ArraysHashCode.ints      60  avgt   30  161.547 ± 0.165  ns/op
ArraysHashCode.ints      70  avgt   30  171.417 ± 0.402  ns/op
ArraysHashCode.ints      80  avgt   30  193.232 ± 0.241  ns/op
ArraysHashCode.ints      90  avgt   30  207.720 ± 0.304  ns/op
ArraysHashCode.ints     100  avgt   30  232.256 ± 0.792  ns/op
ArraysHashCode.ints     200  avgt   30  447.408 ± 0.308  ns/op
ArraysHashCode.ints     300  avgt   30  656.444 ± 1.332  ns/op
--- -XX:-UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   30   11.279 ± 0.013  ns/op
ArraysHashCode.ints       5  avgt   30   24.427 ± 0.005  ns/op
ArraysHashCode.ints      10  avgt   30   35.704 ± 0.011  ns/op
ArraysHashCode.ints      20  avgt   30   58.894 ± 0.062  ns/op
ArraysHashCode.ints      30  avgt   30   82.685 ± 0.015  ns/op
ArraysHashCode.ints      40  avgt   30  105.861 ± 0.065  ns/op
ArraysHashCode.ints      50  avgt   30  129.672 ± 0.038  ns/op
ArraysHashCode.ints      60  avgt   30  152.865 ± 0.057  ns/op
ArraysHashCode.ints      70  avgt   30  176.689 ± 0.063  ns/op
ArraysHashCode.ints      80  avgt   30  199.823 ± 0.035  ns/op
ArraysHashCode.ints      90  avgt   30  223.588 ± 0.046  ns/op
ArraysHashCode.ints     100  avgt   30  247.405 ± 0.661  ns/op
ArraysHashCode.ints     200  avgt   30  481.698 ± 0.123  ns/op
ArraysHashCode.ints     300  avgt   30  716.488 ± 0.104  ns/op
--- -XX:+UseRVV ---
Benchmark            (size)  Mode  Cnt    Score   Error  Units
ArraysHashCode.ints       1  avgt   30   11.276 ± 0.002  ns/op
ArraysHashCode.ints       5  avgt   30   22.590 ± 0.039  ns/op
ArraysHashCode.ints      10  avgt   30   35.075 ± 0.008  ns/op
ArraysHashCode.ints      20  avgt   30   60.142 ± 0.015  ns/op
ArraysHashCode.ints      30  avgt   30   85.185 ± 0.020  ns/op
ArraysHashCode.ints      40  avgt   30  114.650 ± 1.260  ns/op
ArraysHashCode.ints      50  avgt   30  115.520 ± 0.958  ns/op
ArraysHashCode.ints      60  avgt   30  113.143 ± 0.416  ns/op
ArraysHashCode.ints      70  avgt   30  139.685 ± 0.021  ns/op
ArraysHashCode.ints      80  avgt   30  137.792 ± 0.644  ns/op
ArraysHashCode.ints      90  avgt   30  139.445 ± 0.458  ns/op
ArraysHashCode.ints     100  avgt   30  164.109 ± 0.036  ns/op
ArraysHashCode.ints     200  avgt   30  237.400 ± 0.045  ns/op
ArraysHashCode.ints     300  avgt   30  318.105 ± 0.562  ns/op

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

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


More information about the hotspot-compiler-dev mailing list