Integrated: 8318953: RISC-V: Small refactoring for MacroAssembler::test_bit

Gui Cao gcao at openjdk.org
Mon Oct 30 00:33:40 UTC 2023


On Fri, 27 Oct 2023 06:52:54 GMT, Gui Cao <gcao at openjdk.org> wrote:

> Hi, The current test_bit assembly function needs to accept a temporary register because it needs one if it goes to the andi else branch. However, in this case we can actually avoid calling andi and accomplish the same thing by logically shifting to the right and testing the lowest bit. The advantage is that it makes the test_bit function much simpler. Also, to reduce the number of instructions in a given case (consider the mv function), mv actually calls the li function, which generates more than one instruction when the parameter imm exceeds the 32-bit range.
> https://github.com/openjdk/jdk/blob/9123961aaa47aa58ec436640590d2cceedb8cbb1/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp#L2009-L2017
> https://github.com/openjdk/jdk/blob/9123961aaa47aa58ec436640590d2cceedb8cbb1/src/hotspot/cpu/riscv/macroAssembler_riscv.hpp#L730
> https://github.com/openjdk/jdk/blob/9123961aaa47aa58ec436640590d2cceedb8cbb1/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp#L804-L840
> 
> ### Testing:
> qemu 8.1.50:
> - [x] Tier1 tests (fastdebug)
> - [x] Tier2 tests (release)
> - [x] Tier3 tests (release)

This pull request has now been integrated.

Changeset: 988e1dfe
Author:    Gui Cao <gcao at openjdk.org>
Committer: Fei Yang <fyang at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/988e1dfe6ec9b5e77d2e8a78eb792a127c6fe907
Stats:     10 lines in 3 files changed: 6 ins; 0 del; 4 mod

8318953: RISC-V: Small refactoring for MacroAssembler::test_bit

Reviewed-by: fyang, fjiang, luhenry

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

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


More information about the hotspot-dev mailing list