Integrated: 8367253: RISC-V: refactor dependent cpu extensions

Hamlin Li mli at openjdk.org
Mon Sep 29 16:08:18 UTC 2025


On Tue, 9 Sep 2025 12:52:18 GMT, Hamlin Li <mli at openjdk.org> wrote:

> Hi,
> Can you help to review this patch?
> 
> Dependent extensions could be improved in several ways.
> 
> Currently, the dependent cpu extensions are processed in 2 separate places:
> 1. update_flag() when calling VM_Version::setup_cpu_available_features()
> 2. at the end of VM_Version::common_initialize().
> 
> And, dependency relationship can only be expressed in (1:1) way, can not be expressed (1:N) way, but in fact some extensions can depend on several different other extensions, for example, zvfh depends on zvf and rvv. It's would be better to support this (1:N) relationship.
> 
> So, this PR brings several benefits:
> 1. VM options directly related to CPU extensions are automatically set, and they are all set in one place.
> 2. keep synchronization between CPU extensions (information in RVFeatureValue) and and VM options. Previously, code in common_initialize wont' sync to RVFeatureValue, unless do it manually, which is error-prone.
> 3. support to express (1:N) dependency relationship among cpu extensions and related vm options.
> 
> Thanks!
> 
> 
> ## Test
> 
> 
> $TEST_JDK/bin/java -XX:+UnlockExperimentalVMOptions -XX:-UseRVV -XX:+PrintFlagsFinal -version | grep -e UseRVV -e UseZvbc -e UseZvfh -e UseZvkn
> OpenJDK 64-Bit Server VM warning: Cannot enable UseZvbb on cpu without any of the supports: v (disabled)
> OpenJDK 64-Bit Server VM warning: Cannot enable UseZvbc on cpu without any of the supports: v (disabled)
> OpenJDK 64-Bit Server VM warning: Cannot enable UseZvfh on cpu without any of the supports: v (disabled), Zfh (enabled)
>      bool UseRVV                                   = false                             {ARCH diagnostic} {command line}
>      bool UseZvbc                                  = false                           {ARCH experimental} {default}
>      bool UseZvfh                                  = false                             {ARCH diagnostic} {default}
>      bool UseZvkn                                  = false                           {ARCH experimental} {default}
> 
> 
> 
> $TEST_JDK/bin/java -XX:+UnlockExperimentalVMOptions -XX:-UseZfh -XX:+PrintFlagsFinal -version | grep -e UseRVV -e UseZvbc -e UseZvfh -e UseZvkn
> OpenJDK 64-Bit Server VM warning: Cannot enable UseZvfh on cpu without any of the supports: v (enabled), Zfh (disabled)
>      bool UseRVV                                   = true                              {ARCH diagnostic} {default}
>      bool UseZvbc                                  = true                            {ARCH experimental} {default}
>      bool UseZvfh ...

This pull request has now been integrated.

Changeset: 9d71af10
Author:    Hamlin Li <mli at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/9d71af108ea2cc3682607527246d60a19fd820ba
Stats:     121 lines in 2 files changed: 36 ins; 30 del; 55 mod

8367253: RISC-V: refactor dependent cpu extensions

Reviewed-by: fyang, luhenry

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

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


More information about the hotspot-dev mailing list