RFR: 8310276: RISC-V: Make use of shadd macro-assembler function when possible
Dingli Zhang
dzhang at openjdk.org
Sat Jun 24 02:49:05 UTC 2023
On Mon, 19 Jun 2023 06:57:34 GMT, Dingli Zhang <dzhang at openjdk.org> wrote:
> 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. Make 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/rs2;
> 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)
> - `hotspot_tier1`, `jdk_tier1` on QEMU-User w/ and w/o UseZba (fastdebug build)
> - `hotspot_tier1`, `jdk_tier1` on unmatched w/o UseZba (fastdebug build)
`hotspot_tier1`, `jdk_tier1` on QEMU-User w/ and w/o UseZba (fastdebug build) passed.
`hotspot_tier1`, `jdk_tier1` on unmatched w/o UseZba (fastdebug build) passed.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14535#issuecomment-1605241445
More information about the hotspot-dev
mailing list