RFR: 8368732: RISC-V: Detect support for misaligned vector access via hwprobe [v5]

Hamlin Li mli at openjdk.org
Mon Sep 29 13:39:13 UTC 2025


On Mon, 29 Sep 2025 10:12:50 GMT, Fei Yang <fyang at openjdk.org> wrote:

>> Hi, this is a followup change after [JDK-8368366](https://bugs.openjdk.org/browse/JDK-8368366).
>> 
>> According to the latest RISC-V linux hardware probing syscall [1], the performance of misaligned memory accesses has been divided into two cases: `RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF` and `RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF` for scalar and vector respectively. 
>> 
>> This aligns `AlignVector` with `RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF`. That is if the misaligned vector access is fast, we set `AlignVector` to false in the hope that it will save instructions handling address alignment thus improves performance.
>> 
>> This choose to keep the use of `RISCV_HWPROBE_KEY_CPUPERF_0` which is now deprecated and returns similar values
>> to `RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF` for backward compatibility with old linux kernels.
>> 
>> Manually checked the result on platforms w/wo fast misaligned vector accesses by running: 
>> `$java -XX:+PrintFlagsFinal -version | grep AlignVector`
>> 
>> [1] https://docs.kernel.org/arch/riscv/hwprobe.html
>
> Fei Yang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Review

src/hotspot/os_cpu/linux_riscv/riscv_hwprobe.cpp line 270:

> 268:   }
> 269: #endif
> 270:   // RISCV_HWPROBE_KEY_CPUPERF_0 is deprecated. Keep it there for backward

Shoud `RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF` also be checked and enable `unaligned_scalar` here?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27512#discussion_r2388012375


More information about the hotspot-dev mailing list