RFR: 8368722: RISC-V: Several vector load/store tests fail due to lack of support for misaligned vector access [v2]

Hamlin Li mli at openjdk.org
Tue Sep 30 13:26:03 UTC 2025


On Tue, 30 Sep 2025 03:01:10 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 with a new target base due to a merge or a rebase. The pull request now contains one commit:
> 
>   8368722: RISC-V: Several vector load/store tests fail without support for misaligned vector access

src/hotspot/share/classfile/modules.cpp line 459:

> 457:   // Special handling of jdk.incubator.vector
> 458:   if (strcmp(module_name, "jdk.incubator.vector") == 0) {
> 459:     if (FLAG_IS_DEFAULT(EnableVectorSupport) RISCV64_ONLY(&& !AlignVector)) {

I'm not quite sure, but seems this is not an issue only on riscv?
It might be better to get more attention from other developers working on other platforms, could you modify the subject of this bug/pr? Sorry for previous suggestion to change the subject name.

test/hotspot/jtreg/compiler/rangechecks/TestRangeCheckHoistingScaledIV.java line 33:

> 31:  * @requires vm.debug & vm.compiler2.enabled
> 32:  * @requires os.simpleArch == "x64" | os.arch == "aarch64" | (os.arch == "riscv64" & vm.cpu.features ~= ".*rvv.*")
> 33:  * @requires vm.opt.EnableVectorSupport == true

BTW, I see more tests using jdk.incubator.vector besides of tests under test/hotspot/jtreg/compiler/vectorapi, like this test.
Could they also face the similar issue?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27506#discussion_r2391436371
PR Review Comment: https://git.openjdk.org/jdk/pull/27506#discussion_r2391446846


More information about the hotspot-dev mailing list