RFR: 8333154: RISC-V: Add support for primitive array C1 clone intrinsic

Gui Cao gcao at openjdk.org
Wed May 29 08:28:09 UTC 2024


Implementation of primitive array C1 clone intrinsic (https://bugs.openjdk.org/browse/JDK-8333154) for linux-riscv64.

### Correctness testing:
- [x] Run `make test TEST="hotspot_compiler" JTREG="JAVA_OPTIONS=-XX:TieredStopAtLevel=1" `
- [ ] Run tier1-3 tests on SOPHON SG2042 (release)

### Performance testing:
Without Patch: 

make test TEST="micro:java.lang.ArrayClone" MICRO="JAVA_OPTIONS=-XX:TieredStopAtLevel=1"

Benchmark                 (size)  Mode  Cnt     Score     Error  Units
ArrayClone.byteArraycopy       0  avgt   15    90.089 ±   7.122  ns/op
ArrayClone.byteArraycopy      10  avgt   15   146.000 ±  11.761  ns/op
ArrayClone.byteArraycopy     100  avgt   15   289.382 ±  23.903  ns/op
ArrayClone.byteArraycopy    1000  avgt   15   767.864 ±  56.721  ns/op
ArrayClone.byteClone           0  avgt   15   735.692 ±  26.641  ns/op
ArrayClone.byteClone          10  avgt   15   810.810 ±  34.563  ns/op
ArrayClone.byteClone         100  avgt   15  1055.917 ±  93.574  ns/op
ArrayClone.byteClone        1000  avgt   15  1564.465 ± 140.941  ns/op
ArrayClone.intArraycopy        0  avgt   15    93.732 ±   8.468  ns/op
ArrayClone.intArraycopy       10  avgt   15   214.168 ±  34.526  ns/op
ArrayClone.intArraycopy      100  avgt   15   613.363 ±  45.415  ns/op
ArrayClone.intArraycopy     1000  avgt   15  1759.611 ±  59.010  ns/op
ArrayClone.intClone            0  avgt   15   680.100 ±  24.375  ns/op
ArrayClone.intClone           10  avgt   15   835.979 ±  75.154  ns/op
ArrayClone.intClone          100  avgt   15  1337.354 ±  86.182  ns/op
ArrayClone.intClone         1000  avgt   15  2696.280 ± 207.418  ns/op
Finished running test 'micro:java.lang.ArrayClone'


With Patch: 

make test TEST="micro:java.lang.ArrayClone" MICRO="JAVA_OPTIONS=-XX:TieredStopAtLevel=1"

Benchmark                 (size)  Mode  Cnt     Score     Error  Units
ArrayClone.byteArraycopy       0  avgt   15    89.410 ±   5.112  ns/op
ArrayClone.byteArraycopy      10  avgt   15   141.125 ±   8.711  ns/op
ArrayClone.byteArraycopy     100  avgt   15   277.098 ±  12.925  ns/op
ArrayClone.byteArraycopy    1000  avgt   15   770.188 ±  83.034  ns/op
ArrayClone.byteClone           0  avgt   15    94.367 ±   7.088  ns/op
ArrayClone.byteClone          10  avgt   15   151.804 ±  16.497  ns/op
ArrayClone.byteClone         100  avgt   15   296.284 ±  17.893  ns/op
ArrayClone.byteClone        1000  avgt   15   790.517 ±  28.765  ns/op
ArrayClone.intArraycopy        0  avgt   15    93.688 ±   7.050  ns/op
ArrayClone.intArraycopy       10  avgt   15   213.070 ±  12.299  ns/op
ArrayClone.intArraycopy      100  avgt   15   610.022 ±  57.880  ns/op
ArrayClone.intArraycopy     1000  avgt   15  1774.649 ±  89.373  ns/op
ArrayClone.intClone            0  avgt   15    96.396 ±   7.751  ns/op
ArrayClone.intClone           10  avgt   15   216.224 ±  19.219  ns/op
ArrayClone.intClone          100  avgt   15   585.263 ±  31.196  ns/op
ArrayClone.intClone         1000  avgt   15  1559.673 ± 108.939  ns/op
Finished running test 'micro:java.lang.ArrayClone'

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

Commit messages:
 - 8333154: RISC-V: Add support for primitive array C1 clone intrinsic

Changes: https://git.openjdk.org/jdk/pull/19448/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19448&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8333154
  Stats: 31 lines in 7 files changed: 21 ins; 0 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/19448.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19448/head:pull/19448

PR: https://git.openjdk.org/jdk/pull/19448


More information about the hotspot-compiler-dev mailing list