RFR: 8368722: Vector API intrinsics enabled wrongly on platforms without support for misaligned vector access [v8]
Fei Yang
fyang at openjdk.org
Wed Oct 22 04:06:05 UTC 2025
On Wed, 22 Oct 2025 02:13:38 GMT, Dingli Zhang <dzhang at openjdk.org> wrote:
>> Hi,
>> Can you help to review this patch? Thanks!
>>
>> In `*VectorLoadStoreTests.java`, `loadMemorySegmentMaskIOOBE` and `storeMemorySegmentMaskIOOBE` may fail because `int index = fi.apply((int) a.byteSize())` can generate random indices that result in misaligned addresses, leading to SIGBUS on hardware that disallows misaligned vector accesses.
>>
>> Some RISC-V hardware supports fast misaligned scalar accesses but not vector ones, which causes SIGBUS when executing these tests with misaligned vector memory operations.
>>
>> After [JDK-8368732](https://bugs.openjdk.org/browse/JDK-8368732), we can use `AlignVector` to check the result on platforms with or without fast misaligned vector accesses. When misaligned vector accesses are not supported, it is possible to completely disable the VM’s VectorAPI support by setting `EnableVectorSupport`, without affecting auto-vectorization.
>>
>> In addition, after running fastdebug tests including `jdk_vector, jdk_vector_sanity, hotspot_vector_1, hotspot_vector_2, compiler/vectorapi, compiler/vectorization`, we found that some IR-related tests require EnableVectorSupport. Therefore, we added `@requires vm.opt.EnableVectorSupport == true` to skip these tests.
>>
>> We can check the status of EnableVectorSupport as follows:
>>
>> On k1
>> $ java --add-modules=jdk.incubator.vector -Xlog:compilation -version
>> [0.737s][info][compilation] EnableVectorSupport=false
>> [0.738s][info][compilation] EnableVectorReboxing=false
>> [0.738s][info][compilation] EnableVectorAggressiveReboxing=false
>>
>> On qemu
>> $ java --add-modules=jdk.incubator.vector -Xlog:compilation -version
>> [3.048s][info][compilation] EnableVectorSupport=true
>> [3.050s][info][compilation] EnableVectorReboxing=true
>> [3.051s][info][compilation] EnableVectorAggressiveReboxing=true
>>
>>
>> ### Test (fastdebug)
>> - [x] Run jdk_vector, jdk_vector_sanity, hotspot_vector_1, hotspot_vector_2, compiler/vectorapi, compiler/vectorization on k1
>
> Dingli Zhang has updated the pull request incrementally with one additional commit since the last revision:
>
> Add missing headers
src/hotspot/cpu/riscv/vm_version_riscv.cpp line 228:
> 226: if (UseRVV) {
> 227: if (!unaligned_vector.enabled() && AlignVector == false) {
> 228: if (!VM_Version::detect_misaligned_vector_support()){
Suggestion:
// The hwprobe syscall won't be able to detect support for misaligned vector accesses on old kernels.
// Resort to detect_misaligned_vector_support() to see if misaligned vector accesses may trap or not.
if (!unaligned_vector.enabled()) {
if (AlignVector == false && !VM_Version::detect_misaligned_vector_support()) {
src/hotspot/cpu/riscv/vm_version_riscv.cpp line 574:
> 572: return true;
> 573: }
> 574: return false;
Suggestion: `return detect_misaligned_vector_stub() == 1;`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27506#discussion_r2450346243
PR Review Comment: https://git.openjdk.org/jdk/pull/27506#discussion_r2450343332
More information about the hotspot-dev
mailing list