[jdk25u] RFR: 8362596: RISC-V: Improve _vectorizedHashCode intrinsic
Dingli Zhang
dzhang at openjdk.org
Mon Jul 28 00:58:11 UTC 2025
On Mon, 28 Jul 2025 00:53:19 GMT, Dingli Zhang <dzhang at openjdk.org> wrote:
> Hi all,
>
> This pull request contains a backport of commit [4189fcba](https://github.com/openjdk/jdk/commit/4189fcbac40943f3b26c3a01938837b4e4762285) from the [openjdk/jdk](https://git.openjdk.org/jdk) repository.
>
> The commit being backported was authored by Yuri Gaevsky on 27 Jul 2025 and was reviewed by Fei Yang and Feilong Jiang.
>
> Thanks!
Test on k1:
$ 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 5 -i 10 2>&1 | tail -15 ) done
Before this patch:
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.278 ± 0.004 ns/op
ArraysHashCode.ints 5 avgt 30 28.923 ± 0.295 ns/op
ArraysHashCode.ints 10 avgt 30 41.271 ± 0.418 ns/op
ArraysHashCode.ints 20 avgt 30 68.275 ± 0.018 ns/op
ArraysHashCode.ints 30 avgt 30 88.004 ± 0.176 ns/op
ArraysHashCode.ints 40 avgt 30 115.206 ± 0.117 ns/op
ArraysHashCode.ints 50 avgt 30 135.322 ± 0.080 ns/op
ArraysHashCode.ints 60 avgt 30 161.843 ± 0.345 ns/op
ArraysHashCode.ints 70 avgt 30 170.085 ± 0.471 ns/op
ArraysHashCode.ints 80 avgt 30 193.860 ± 0.407 ns/op
ArraysHashCode.ints 90 avgt 30 208.385 ± 0.433 ns/op
ArraysHashCode.ints 100 avgt 30 232.398 ± 0.232 ns/op
ArraysHashCode.ints 200 avgt 30 448.131 ± 0.497 ns/op
ArraysHashCode.ints 300 avgt 30 654.970 ± 0.697 ns/op
--- -XX:-UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 11.276 ± 0.003 ns/op
ArraysHashCode.ints 5 avgt 30 24.449 ± 0.024 ns/op
ArraysHashCode.ints 10 avgt 30 35.710 ± 0.017 ns/op
ArraysHashCode.ints 20 avgt 30 58.887 ± 0.017 ns/op
ArraysHashCode.ints 30 avgt 30 82.695 ± 0.028 ns/op
ArraysHashCode.ints 40 avgt 30 105.880 ± 0.028 ns/op
ArraysHashCode.ints 50 avgt 30 129.733 ± 0.153 ns/op
ArraysHashCode.ints 60 avgt 30 152.854 ± 0.062 ns/op
ArraysHashCode.ints 70 avgt 30 176.661 ± 0.073 ns/op
ArraysHashCode.ints 80 avgt 30 199.873 ± 0.231 ns/op
ArraysHashCode.ints 90 avgt 30 223.657 ± 0.101 ns/op
ArraysHashCode.ints 100 avgt 30 246.876 ± 0.113 ns/op
ArraysHashCode.ints 200 avgt 30 481.766 ± 0.175 ns/op
ArraysHashCode.ints 300 avgt 30 717.091 ± 0.616 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 24.436 ± 0.013 ns/op
ArraysHashCode.ints 10 avgt 30 35.710 ± 0.011 ns/op
ArraysHashCode.ints 20 avgt 30 58.882 ± 0.022 ns/op
ArraysHashCode.ints 30 avgt 30 82.703 ± 0.035 ns/op
ArraysHashCode.ints 40 avgt 30 105.883 ± 0.058 ns/op
ArraysHashCode.ints 50 avgt 30 129.681 ± 0.050 ns/op
ArraysHashCode.ints 60 avgt 30 152.911 ± 0.088 ns/op
ArraysHashCode.ints 70 avgt 30 176.678 ± 0.074 ns/op
ArraysHashCode.ints 80 avgt 30 199.898 ± 0.229 ns/op
ArraysHashCode.ints 90 avgt 30 223.674 ± 0.092 ns/op
ArraysHashCode.ints 100 avgt 30 246.850 ± 0.040 ns/op
ArraysHashCode.ints 200 avgt 30 481.790 ± 0.162 ns/op
ArraysHashCode.ints 300 avgt 30 716.580 ± 0.237 ns/op
After this patch:
--- -XX:DisableIntrinsic=_vectorizedHashCode ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 10.650 ± 0.004 ns/op
ArraysHashCode.ints 5 avgt 30 29.543 ± 0.354 ns/op
ArraysHashCode.ints 10 avgt 30 41.614 ± 0.208 ns/op
ArraysHashCode.ints 20 avgt 30 68.263 ± 0.042 ns/op
ArraysHashCode.ints 30 avgt 30 88.748 ± 0.141 ns/op
ArraysHashCode.ints 40 avgt 30 115.109 ± 0.180 ns/op
ArraysHashCode.ints 50 avgt 30 136.116 ± 0.522 ns/op
ArraysHashCode.ints 60 avgt 30 162.157 ± 0.167 ns/op
ArraysHashCode.ints 70 avgt 30 171.946 ± 0.215 ns/op
ArraysHashCode.ints 60 avgt 30 162.157 ± 0.167 ns/op
ArraysHashCode.ints 70 avgt 30 171.946 ± 0.215 ns/op
ArraysHashCode.ints 80 avgt 30 195.261 ± 0.173 ns/op
ArraysHashCode.ints 90 avgt 30 208.916 ± 0.377 ns/op
ArraysHashCode.ints 100 avgt 30 233.241 ± 0.216 ns/op
ArraysHashCode.ints 200 avgt 30 448.779 ± 0.196 ns/op
ArraysHashCode.ints 300 avgt 30 655.929 ± 0.519 ns/op
--- -XX:-UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 10.649 ± 0.004 ns/op
ArraysHashCode.ints 5 avgt 30 22.556 ± 0.012 ns/op
ArraysHashCode.ints 10 avgt 30 31.952 ± 0.011 ns/op
ArraysHashCode.ints 20 avgt 30 50.120 ± 0.018 ns/op
ArraysHashCode.ints 30 avgt 30 69.602 ± 0.182 ns/op
ArraysHashCode.ints 40 avgt 30 87.694 ± 0.018 ns/op
ArraysHashCode.ints 50 avgt 30 107.130 ± 0.026 ns/op
ArraysHashCode.ints 60 avgt 30 125.349 ± 0.169 ns/op
ArraysHashCode.ints 70 avgt 30 144.814 ± 0.096 ns/op
ArraysHashCode.ints 80 avgt 30 163.463 ± 2.065 ns/op
ArraysHashCode.ints 90 avgt 30 182.362 ± 0.077 ns/op
ArraysHashCode.ints 100 avgt 30 200.452 ± 0.051 ns/op
ArraysHashCode.ints 200 avgt 30 388.406 ± 0.132 ns/op
ArraysHashCode.ints 300 avgt 30 576.520 ± 0.347 ns/op
--- -XX:+UseRVV ---
Benchmark (size) Mode Cnt Score Error Units
ArraysHashCode.ints 1 avgt 30 10.650 ± 0.004 ns/op
ArraysHashCode.ints 5 avgt 30 22.551 ± 0.007 ns/op
ArraysHashCode.ints 10 avgt 30 31.949 ± 0.005 ns/op
ArraysHashCode.ints 20 avgt 30 50.177 ± 0.173 ns/op
ArraysHashCode.ints 30 avgt 30 69.532 ± 0.025 ns/op
ArraysHashCode.ints 40 avgt 30 87.691 ± 0.026 ns/op
ArraysHashCode.ints 50 avgt 30 107.121 ± 0.041 ns/op
ArraysHashCode.ints 60 avgt 30 125.280 ± 0.054 ns/op
ArraysHashCode.ints 70 avgt 30 144.714 ± 0.036 ns/op
ArraysHashCode.ints 80 avgt 30 162.882 ± 0.048 ns/op
ArraysHashCode.ints 90 avgt 30 182.339 ± 0.076 ns/op
ArraysHashCode.ints 100 avgt 30 200.487 ± 0.087 ns/op
ArraysHashCode.ints 200 avgt 30 388.452 ± 0.177 ns/op
ArraysHashCode.ints 300 avgt 30 576.325 ± 0.177 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk25u/pull/42#issuecomment-3124869057
More information about the jdk-updates-dev
mailing list