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