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