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

Dingli Zhang dzhang at openjdk.org
Mon Jun 26 12:20:05 UTC 2023


On Mon, 19 Jun 2023 08:29:05 GMT, Fei Yang <fyang 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)
>
> Looks fine to me.

@RealFYang @luhenry @feilongjiang @VladimirKempik @robehn Thanks for the review!

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

PR Comment: https://git.openjdk.org/jdk/pull/14535#issuecomment-1607349031


More information about the hotspot-dev mailing list