RFR: 8345110: RISC-V: Optimize and and clean up byte reverse assembler routine

Fei Yang fyang at openjdk.org
Thu Nov 28 00:22:54 UTC 2024


Hi, Could you please help review this change?

MacroAssembler routines `revb_w` and `revb_w_w` will emit 32 and 17 instructions respectively without Zbb.

Major changes:
1. There is no need for `revb_w` to reverse bytes for each 32-bit word.
   All the callers only care about the lower 32-bit word. This reimplement `revb_w` so that it only
   reverses bytes in lower 32-bit word and sign-extends the result (14 instructions). This makes `revb_w_w` duplicate.
2. Removed some assembler routines that are unused or become unnecessary (`revb_h`, `revb_h_helper`, `revb_h_h`, `revb_w_w`).
3. Adapted callers of these removed assembler routines in file `riscv_b.ad` to emit Zbb instructions directly.

Will look into `revb_h_h_u` and `revb_h_w_u` after this change.

Testing on linux-riscv64 platform:
- [ ] tier1 (release)

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

Commit messages:
 - 8345110: RISC-V: Optimize and and clean up byte reverse assembler routine

Changes: https://git.openjdk.org/jdk/pull/22410/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22410&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8345110
  Stats: 122 lines in 4 files changed: 23 ins; 77 del; 22 mod
  Patch: https://git.openjdk.org/jdk/pull/22410.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22410/head:pull/22410

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


More information about the hotspot-dev mailing list