RFR: 8318217: RISC-V: C2 VectorizedHashCode

Yuri Gaevsky duke at openjdk.org
Mon Nov 13 12:39:16 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:              without intrinsic      with intrinsic
------------------------------------------------------------------------------
Benchmark  (size)  Mode  Cnt       Score     Error      Score     Error  Units
------------------------------------------------------------------------------
multiints       0  avgt   30       2.780 ?   0.022      2.816 ?   0.038  ns/op
multiints       1  avgt   30       5.073 ?   0.032      5.101 ?   0.064  ns/op
multiints       2  avgt   30      14.656 ?   0.234     10.974 ?   0.118  ns/op
multiints       3  avgt   30      12.890 ?   0.064     14.168 ?   0.096  ns/op
multiints       4  avgt   30      13.715 ?   0.092     12.552 ?   0.188  ns/op
multiints       5  avgt   30      19.068 ?   0.172     13.557 ?   0.164  ns/op
multiints       6  avgt   30      18.863 ?   0.122     14.848 ?   0.086  ns/op
multiints       7  avgt   30      23.155 ?   0.123     17.300 ?   0.360  ns/op
multiints       8  avgt   30      21.656 ?   0.130     19.214 ?   1.689  ns/op
multiints       9  avgt   30      27.223 ?   0.116     20.450 ?   0.088  ns/op
multiints      10  avgt   30      26.194 ?   0.116     19.463 ?   0.411  ns/op
multiints      50  avgt   30      97.904 ?   1.396     69.662 ?   1.729  ns/op
multiints     100  avgt   30     179.607 ?   0.766    137.127 ?   3.156  ns/op
multiints     200  avgt   30     303.845 ?   2.743    235.476 ?   3.446  ns/op
multiints     500  avgt   30     752.295 ?   2.131    571.157 ?   4.258  ns/op
multiints    1000  avgt   30    1404.489 ?   5.839   1048.263 ?   3.473  ns/op
multiints   10000  avgt   30   13797.829 ?  44.821  10344.752 ?  24.183  ns/op
multiints  100000  avgt   30  135067.307 ? 254.361  98806.823 ? 131.562  ns/op
------------------------------------------------------------------------------

-------------

Commit messages:
 - 8318217: RISC-V: C2 VectorizedHashCode

Changes: https://git.openjdk.org/jdk/pull/16629/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16629&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8318217
  Stats: 145 lines in 6 files changed: 145 ins; 0 del; 0 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