RFR: 8318217: RISC-V: C2 VectorizedHashCode [v4]
Yuri Gaevsky
duke at openjdk.org
Fri Nov 17 18:36:59 UTC 2023
> Hello All,
>
> Please review these changes to support _vectorizedHashCode intrinsic on
> RISC-V platform. The patch adds the "scalar" code for the intrinsic without
> usage of any RVV instruction but provides manual unrolling of the appropriate
> loop. The code with usage of RVV instruction could be added as follow-up of
> the patch or independently.
>
> Thanks,
> -Yuri Gaevsky
>
> P.S. My OCA has been accepted recently (ygaevsky).
>
> ### Correctness checks
>
> Testing: tier1 tests successfully passed on a RISC-V StarFive JH7110 board with Linux.
>
> ### Performance results (the numbers for non-ints are similar)
>
> #### StarFive JH7110 board:
>
>
> ArraysHashCode: without intrinsic with intrinsic
> -------------------------------------------------------------------------------
> Benchmark (size) Mode Cnt Score Error Score Error Units
> -------------------------------------------------------------------------------
> multiints 0 avgt 30 2.658 ? 0.001 2.661 ? 0.004 ns/op
> multiints 1 avgt 30 4.881 ? 0.011 4.892 ? 0.015 ns/op
> multiints 2 avgt 30 16.109 ? 0.041 10.451 ? 0.075 ns/op
> multiints 3 avgt 30 14.873 ? 0.068 11.753 ? 0.024 ns/op
> multiints 4 avgt 30 17.283 ? 0.078 13.176 ? 0.044 ns/op
> multiints 5 avgt 30 19.691 ? 0.136 14.723 ? 0.046 ns/op
> multiints 6 avgt 30 21.727 ? 0.166 15.463 ? 0.124 ns/op
> multiints 7 avgt 30 23.790 ? 0.126 18.298 ? 0.059 ns/op
> multiints 8 avgt 30 23.527 ? 0.116 18.267 ? 0.046 ns/op
> multiints 9 avgt 30 27.981 ? 0.303 20.453 ? 0.069 ns/op
> multiints 10 avgt 30 26.947 ? 0.215 20.541 ? 0.051 ns/op
> multiints 50 avgt 30 95.373 ? 0.588 69.238 ? 0.208 ns/op
> multiints 100 avgt 30 177.109 ? 0.525 137.852 ? 0.417 ns/op
> multiints 200 avgt 30 341.074 ? 1.363 296.832 ? 0.725 ns/op
> multiints 500 avgt 30 847.993 ? 1.713 752.415 ? 1.918 ns/op
> multiints 1000 avgt 30 1610.199 ? 5.424 1426.112 ? 3.407 ns/op
> multiints 10000 avgt 30 16234.260 ? 26.789 14447.936 ? 26.345 ns/op
> multiints 100000 avgt 30 170726.025 ? 184.003 152587.649 ? 381.964 ns/op
> -------------------------------------------------------------------------------
>
> #### T-Head RVB-ICE board:
>
>
> ArraysHashCode: ...
Yuri Gaevsky has updated the pull request incrementally with eight additional commits since the last revision:
- Temporary registers renaming.
- Get tmp3 back and use it to hold 31^^3 constant.
- Use t0/t1 as tmp1/tmp2.
- Removed tmp3 register.
- Replaced tmp3 with tmp1 in wide loop.
- Replaced lw() of 31^^2 from memory with mv(); removed 31^^2..31^^0 constants as not needed anymore.
- Renamed chunk -> chunks
- Removed usage of cnt in loops for branch decisions.
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/16629/files
- new: https://git.openjdk.org/jdk/pull/16629/files/86bcccee..eb4b0f87
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=16629&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=16629&range=02-03
Stats: 59 lines in 4 files changed: 11 ins; 11 del; 37 mod
Patch: https://git.openjdk.org/jdk/pull/16629.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/16629/head:pull/16629
PR: https://git.openjdk.org/jdk/pull/16629
More information about the hotspot-dev
mailing list