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