RFR: 8346475: RISC-V: Small improvement for MacroAssembler::ctzc_bit [v2]

Hamlin Li mli at openjdk.org
Wed Dec 18 14:13:41 UTC 2024


On Wed, 18 Dec 2024 13:29:18 GMT, Fei Yang <fyang at openjdk.org> wrote:

>> Hi, please review this small improvement.
>> 
>> When `step` is 16, the `andi` instruction in the loop performs a bitwise AND with immediate mask value 0xFFFF. This will emit 3 instructions. It's effectively a zero extension operation and could be reduced to 1 or 2 instructions repectively depending on whether Zbb extension is available. And there is no difference when `step` is 8 with this change.
>> 
>> Testing: tier1 and gtest:all are clean on Premier-P550 SBC running Ubuntu-24.04.
>
> Fei Yang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Review comments

Another comment.

src/hotspot/cpu/riscv/macroAssembler_riscv.cpp line 5408:

> 5406:     ctz(Rd, Rs);
> 5407:     andi(tmp1, Rd, step - 1);
> 5408:     sub(Rd, Rd, tmp1);

Seems these 2 lines can be replaced with single instruction:

andi Rd, Rd, -step

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

PR Review: https://git.openjdk.org/jdk/pull/22800#pullrequestreview-2511957263
PR Review Comment: https://git.openjdk.org/jdk/pull/22800#discussion_r1890305395


More information about the hotspot-dev mailing list