RFR: 8310276: RISC-V: Make use of shadd macro-assembler function when possible

Dingli Zhang dzhang at openjdk.org
Mon Jun 19 07:04:41 UTC 2023


Hi all,

We can use `shadd` to replace the following command combinations when
appropriate:

slli(rd1, rs1, imm)
add(rd2, rs2, rs3)


Conditions to be met:
1. Rd1 and rs3/rs2 are the same register;
2. The data given to rd1 by the `slli` instruction is not used later;
3.  Mask sure rs2, rs3 are not the same register, so that the above instruction
combination will actually be executed if zba is not enabled, whereas if rs2,
rs3 are the same register then `slli` will destroy the value of rs3;
4.  The value of `imm` is in the range of [1, 3], so that if zba is enabled,
it will use sh1add, sh2add, sh3add instructions instead of the above two
instructions.

### Testing:

- tier1-3 on QEMU-System w/ and w/o UseZba (release build)
- tier1-3 tests on unmatched board w/o UseZba (release build)

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

Commit messages:
 - 8310276: RISC-V: Make use of shadd macro-assembler function when possible

Changes: https://git.openjdk.org/jdk/pull/14535/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14535&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8310276
  Stats: 5 lines in 3 files changed: 1 ins; 2 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/14535.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14535/head:pull/14535

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


More information about the hotspot-dev mailing list