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