diff --git a/common.json b/common.json index de37be8d04a9..21afc8a481cd 100644 --- a/common.json +++ b/common.json @@ -8,7 +8,7 @@ "COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet", "jdks": { - "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+22-2657", "platformspecific": true, "extrabundles": ["static-libs"]}, + "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+23-2725", "platformspecific": true, "extrabundles": ["static-libs"]}, "oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]}, "labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true }, @@ -45,13 +45,13 @@ "oraclejdk23": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+37", "platformspecific": true, "extrabundles": ["static-libs"]}, - "oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+22", "platformspecific": true, "extrabundles": ["static-libs"]}, - "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+22-jvmci-b01", "platformspecific": true }, - "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+22-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+22-jvmci-b01-sulong", "platformspecific": true }, - "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+22-jvmci-b01", "platformspecific": true }, - "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+22-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+22-jvmci-b01-sulong", "platformspecific": true } + "oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+23", "platformspecific": true, "extrabundles": ["static-libs"]}, + "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01", "platformspecific": true }, + "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+23-jvmci-b01-sulong", "platformspecific": true }, + "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01", "platformspecific": true }, + "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+23-jvmci-b01-sulong", "platformspecific": true } }, "eclipse": { diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java index 94ba803e1909..528bc564f187 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java @@ -55,8 +55,8 @@ public final class JVMCIVersionCheck { */ private static final Map> JVMCI_MIN_VERSIONS = Map.of( "25", Map.of( - "Oracle Corporation", createLabsJDKVersion("25+22", 1), - DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("25+22", 1))); + "Oracle Corporation", createLabsJDKVersion("25+23", 1), + DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("25+23", 1))); private static final int NA = 0; /** * Minimum Java release supported by Graal. diff --git a/substratevm/mx.substratevm/mx_substratevm.py b/substratevm/mx.substratevm/mx_substratevm.py index 92339d10aee4..4c500dcf8732 100644 --- a/substratevm/mx.substratevm/mx_substratevm.py +++ b/substratevm/mx.substratevm/mx_substratevm.py @@ -609,6 +609,9 @@ def run_nic_conditional_config_test(agent_path, conditional_config_filter_path): 'experimental-conditional-config-part'] jvm_unittest(['-agentpath:' + agent_path + '=' + ','.join(agent_opts), '-Dcom.oracle.svm.configure.test.conditionalconfig.PartialConfigurationGenerator.enabled=true', + '--add-exports=jdk.graal.compiler/jdk.graal.compiler.options=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED', 'com.oracle.svm.configure.test.conditionalconfig.PartialConfigurationGenerator#' + test_case]) config_output_dir = join(nic_test_dir, 'config-output') nic_exe = mx.cmd_suffix(join(mx.JDKConfig(home=mx_sdk_vm_impl.graalvm_output()).home, 'bin', 'native-image-configure')) @@ -621,6 +624,9 @@ def run_nic_conditional_config_test(agent_path, conditional_config_filter_path): jvm_unittest( ['-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier.configpath=' + config_output_dir, "-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier.enabled=true", + '--add-exports=jdk.graal.compiler/jdk.graal.compiler.options=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED', 'com.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier']) @@ -635,10 +641,16 @@ def run_agent_conditional_config_test(agent_path, conditional_config_filter_path # This run generates the configuration from different test cases jvm_unittest(['-agentpath:' + agent_path + '=' + ','.join(agent_opts), '-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationGenerator.enabled=true', + '--add-exports=jdk.graal.compiler/jdk.graal.compiler.options=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED', 'com.oracle.svm.configure.test.conditionalconfig.ConfigurationGenerator']) # This run verifies that the generated configuration matches the expected one jvm_unittest(['-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier.configpath=' + config_dir, - "-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier.enabled=true", + '-Dcom.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier.enabled=true', + '--add-exports=jdk.graal.compiler/jdk.graal.compiler.options=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED', + '--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED', 'com.oracle.svm.configure.test.conditionalconfig.ConfigurationVerifier']) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/amd64/AMD64LibCHelper.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/amd64/AMD64LibCHelper.java index f9335e0cca3d..53e493159002 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/amd64/AMD64LibCHelper.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/amd64/AMD64LibCHelper.java @@ -43,7 +43,7 @@ * - substratevm/src/com.oracle.svm.native.libchelper/include/amd64hotspotcpuinfo.h * - substratevm/src/com.oracle.svm.native.libchelper/src/cpuid.c */ -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+10/src/hotspot/cpu/x86/vm_version_x86.hpp#L41-L328") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/cpu/x86/vm_version_x86.hpp#L41-L348") @CLibrary(value = "libchelper", requireStatic = true) public class AMD64LibCHelper { @Platforms(Platform.AMD64.class) @@ -314,6 +314,14 @@ public interface CPUFeatures extends PointerBase { @AllowNarrowingCast @CField boolean fAVX512_FP16(); + + @AllowNarrowingCast + @CField + boolean fAVX10_1(); + + @AllowNarrowingCast + @CField + boolean fAVX10_2(); } // Checkstyle: resume } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/locale/LocaleCHelper.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/locale/LocaleCHelper.java index bc972d833909..5832b2e9bc73 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/locale/LocaleCHelper.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/c/locale/LocaleCHelper.java @@ -39,7 +39,7 @@ @CContext(LocaleDirectives.class) @CLibrary(value = "libchelper", requireStatic = true, dependsOn = "java") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-24+13/src/java.base/unix/native/libjava/locale_str.h") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/java.base/unix/native/libjava/locale_str.h") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-24+13/src/java.base/windows/native/libjava/locale_str.h") class LocaleCHelper { // Checkstyle: stop diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java index 1505393f4eca..5cfc922accae 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java @@ -50,7 +50,7 @@ // The following annotations are for files in `src/hotspot`, which are copied from the JDK @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/java.base/share/native/include/jni.h") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/java.base/unix/native/include/jni_md.h") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+19/src/hotspot/os/linux/cgroupSubsystem_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/os/linux/cgroupSubsystem_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupSubsystem_linux.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupUtil_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupUtil_linux.hpp") @@ -60,7 +60,7 @@ @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/osContainer_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/osContainer_linux.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+21/src/hotspot/os/linux/os_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/os/linux/os_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/os_linux.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/os_linux.inline.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/posix/include/jvm_md.h") @@ -78,13 +78,13 @@ @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+22/src/hotspot/share/utilities/compilerWarnings_gcc.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+22/src/hotspot/share/utilities/compilerWarnings.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/utilities/globalDefinitions_gcc.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+21/src/hotspot/share/utilities/globalDefinitions.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/share/utilities/globalDefinitions.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+21/src/hotspot/share/utilities/macros.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/utilities/ostream.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+21/src/hotspot/share/utilities/ostream.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/share/utilities/ostream.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/share/utilities/ostream.hpp") // The following annotations are for files in `src/svm`, which are completely customized for SVM @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/logging/log.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/memory/allocation.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/share/memory/allocation.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+22/src/hotspot/share/runtime/globals.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+21/src/hotspot/share/utilities/debug.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/utilities/debug.hpp") diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java similarity index 80% rename from substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java rename to substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java index 0dda229533c4..0384c7c6da51 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java @@ -30,31 +30,23 @@ import com.oracle.svm.core.annotate.Alias; import com.oracle.svm.core.annotate.RecomputeFieldValue; -import com.oracle.svm.core.annotate.Substitute; import com.oracle.svm.core.annotate.TargetClass; /** - * Substitution to initialize {@link #catalog} at build time. + * Substitution to initialize {@link #JDKCATALOG} at build time. * * JDK-8306055 introduced a built-in Catalog to JDK XML module in JDK 22. Without special treatment, * the initialization code would pull intermediate types (e.g. {@code CatalogReader}) into the image - * heap. To avoid this, we initialize the catalog at build time and substitute the {@link #init} - * method to be empty. + * heap. To avoid this, we initialize the catalog at build time. * * Ideally, we would initialize all of {@code jdk.xml} at run time, but that is too intrusive at the * current point in time (GR-50683). */ -@TargetClass(className = "jdk.xml.internal.JdkCatalog") -public final class Target_jdk_xml_internal_JdkCatalog { +@TargetClass(className = "jdk.xml.internal.JdkXmlConfig$CatalogHolder") +public final class Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder { @Alias // @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = JdkCatalogSupplier.class, isFinal = true) // - public static Target_javax_xml_catalog_Catalog catalog; - - @Substitute - @SuppressWarnings("unused") - public static void init(String resolve) { - // initialized at build time - } + public static Target_javax_xml_catalog_Catalog JDKCATALOG; } @TargetClass(className = "javax.xml.catalog.Catalog") @@ -75,8 +67,8 @@ final class Target_javax_xml_parsers_SAXParser { final class JdkCatalogSupplier implements FieldValueTransformer { /** - * Verifies that {@link Target_jdk_xml_internal_JdkCatalog#catalog} is non-null. The - * initialization is triggered in + * Verifies that {@link Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder#JDKCATALOG} is + * non-null. The initialization is triggered in * {@code com.oracle.svm.hosted.xml.JavaxXmlClassAndResourcesLoaderFeature#initializeJdkCatalog()} */ @Override diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jvmti/headers/JvmtiDirectives.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jvmti/headers/JvmtiDirectives.java index a40d0dcc3423..59b62437b21a 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jvmti/headers/JvmtiDirectives.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jvmti/headers/JvmtiDirectives.java @@ -35,7 +35,7 @@ import com.oracle.svm.core.SubstrateOptions; import com.oracle.svm.core.util.BasedOnJDKFile; -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+6/src/hotspot/share/prims/jvmti.xml") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/share/prims/jvmti.xml") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-24+11/src/hotspot/share/prims/jvmtiH.xsl") class JvmtiDirectives implements CContext.Directives { private final Path jdkIncludeDir = Paths.get(System.getProperty("java.home")).resolve("include"); diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java index 0a83ca6d2958..415fc181ac1f 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java @@ -74,16 +74,16 @@ public void beforeAnalysis(BeforeAnalysisAccess access) { } /** - * Initialize the {@code JdkCatalog#catalog} field. We do this eagerly (instead of e.g. in a + * Initialize the {@code CatalogHolder#catalog} field. We do this eagerly (instead of e.g. in a * {@link FieldValueTransformer}) to work around a race condition in * XMLSecurityManager#prepareCatalog (JDK-8350189). */ private static void initializeJdkCatalog() { if (ModuleLayer.boot().findModule("java.xml").isPresent()) { - // Ensure the JdkCatalog#catalog field is initialized. - Class xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.XMLSecurityManager"); + // Ensure the JdkXmlConfig$CatalogHolder#catalog field is initialized. + Class xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.JdkXmlConfig$CatalogHolder"); // The constructor call prepareCatalog which will call JdkCatalog#init. - ReflectionUtil.newInstance(xmlSecurityManager); + ReflectionUtil.readStaticField(xmlSecurityManager, "JDKCATALOG"); } } } diff --git a/substratevm/src/com.oracle.svm.native.libchelper/include/amd64cpufeatures.h b/substratevm/src/com.oracle.svm.native.libchelper/include/amd64cpufeatures.h index 9954a02f3586..e975876cb771 100644 --- a/substratevm/src/com.oracle.svm.native.libchelper/include/amd64cpufeatures.h +++ b/substratevm/src/com.oracle.svm.native.libchelper/include/amd64cpufeatures.h @@ -89,4 +89,6 @@ typedef struct { uint8_t fAPX_F; uint8_t fSHA512; uint8_t fAVX512_FP16; + uint8_t fAVX10_1; + uint8_t fAVX10_2; } CPUFeatures; diff --git a/substratevm/src/com.oracle.svm.native.libchelper/include/amd64hotspotcpuinfo.h b/substratevm/src/com.oracle.svm.native.libchelper/include/amd64hotspotcpuinfo.h index b88990baae64..92f2b08be7ca 100644 --- a/substratevm/src/com.oracle.svm.native.libchelper/include/amd64hotspotcpuinfo.h +++ b/substratevm/src/com.oracle.svm.native.libchelper/include/amd64hotspotcpuinfo.h @@ -286,12 +286,33 @@ typedef union { typedef union { uint32_t value; struct { - uint32_t : 21, + uint32_t : 19, + avx10 : 1, + : 1, apx_f : 1, : 10; } bits; } SefCpuid7SubLeaf1Edx; +typedef union { + uint32_t value; + struct { + uint32_t sub_leaves_cnt : 31; + } bits; +} StdCpuid24MainLeafEax; + +typedef union StdCpuid24MainLeafEbx { + uint32_t value; + struct { + uint32_t avx10_converged_isa_version : 8, + : 8, + : 2, + avx10_vlen_512 : 1, + : 13; + } bits; +} StdCpuid24MainLeafEbx; + + typedef union { uint32_t value; struct { @@ -354,6 +375,11 @@ typedef struct { SefCpuid7SubLeaf1Eax sefsl1_cpuid7_eax; SefCpuid7SubLeaf1Edx sefsl1_cpuid7_edx; + // cpuid function 24 converged vector ISA main leaf + // eax = 24, ecx = 0 + StdCpuid24MainLeafEax std_cpuid24_eax; + StdCpuid24MainLeafEbx std_cpuid24_ebx; + // cpuid function 0xB (processor topology) // ecx = 0 uint32_t tpl_cpuidB0_eax; diff --git a/substratevm/src/com.oracle.svm.native.libchelper/src/cpuid.c b/substratevm/src/com.oracle.svm.native.libchelper/src/cpuid.c index 4c2a89f531f2..193fb145c62d 100644 --- a/substratevm/src/com.oracle.svm.native.libchelper/src/cpuid.c +++ b/substratevm/src/com.oracle.svm.native.libchelper/src/cpuid.c @@ -315,6 +315,13 @@ static void initialize_cpuinfo(CpuidInfo *_cpuid_info) _cpuid_info->sefsl1_cpuid7_edx.value = edx; } + if (max_level >= 24) + { + get_cpuid(24, &eax, &ebx, &ecx, &edx); + _cpuid_info->std_cpuid24_eax.value = eax; + _cpuid_info->std_cpuid24_ebx.value = ebx; + } + // topology if (max_level >= 0xB) { @@ -483,6 +490,35 @@ NO_INLINE static void set_cpufeatures(CPUFeatures *features, CpuidInfo *_cpuid_i if (_cpuid_info->sef_cpuid7_ecx.bits.avx512_vbmi2 != 0) features->fAVX512_VBMI2 = 1; } + if (is_intel(_cpuid_info)) { + if (_cpuid_info->sefsl1_cpuid7_edx.bits.avx10 != 0 && + _cpuid_info->std_cpuid24_ebx.bits.avx10_vlen_512 !=0 && + _cpuid_info->std_cpuid24_ebx.bits.avx10_converged_isa_version >= 1 && + _cpuid_info->xem_xcr0_eax.bits.opmask != 0 && + _cpuid_info->xem_xcr0_eax.bits.zmm512 != 0 && + _cpuid_info->xem_xcr0_eax.bits.zmm32 != 0) { + features->fAVX10_1 = 1; + features->fAVX_IFMA = 1; + features->fAVX512F = 1; + features->fAVX512CD = 1; + features->fAVX512DQ = 1; + features->fAVX512_IFMA = 1; + features->fAVX512PF = 1; + features->fAVX512ER = 1; + features->fAVX512BW = 1; + features->fAVX512VL = 1; + features->fAVX512_VPOPCNTDQ = 1; + features->fAVX512_VPCLMULQDQ = 1; + features->fAVX512_VAES = 1; + features->fAVX512_VNNI = 1; + features->fAVX512_BITALG = 1; + features->fAVX512_VBMI = 1; + features->fAVX512_VBMI2 = 1; + if (_cpuid_info->std_cpuid24_ebx.bits.avx10_converged_isa_version >= 2) { + features->fAVX10_2 = 1; + } + } + } } if (_cpuid_info->std_cpuid1_ecx.bits.hv != 0) features->fHV = 1; diff --git a/substratevm/src/com.oracle.svm.native.libchelper/src/locale_str.h b/substratevm/src/com.oracle.svm.native.libchelper/src/locale_str.h index 3bf3c3cd9d4a..36bf8a0ef880 100644 --- a/substratevm/src/com.oracle.svm.native.libchelper/src/locale_str.h +++ b/substratevm/src/com.oracle.svm.native.libchelper/src/locale_str.h @@ -87,7 +87,7 @@ static char *locale_aliases[] = { "zh", "zh_CN", #ifdef __linux__ "bokmal", "nb_NO", - "bokm\xE5l", "nb_NO", + "bokmål", "nb_NO", "catalan", "ca_ES", "croatian", "hr_HR", "czech", "cs_CZ", @@ -98,7 +98,7 @@ static char *locale_aliases[] = { "eesti", "et_EE", "estonian", "et_EE", "finnish", "fi_FI", - "fran\xE7\x61is", "fr_FR", + "français", "fr_FR", "french", "fr_FR", "galego", "gl_ES", "galician", "gl_ES", @@ -162,7 +162,7 @@ static char *language_names[] = { "deutsch", "de", "dutch", "nl", "finnish", "fi", - "fran\xE7\x61is", "fr", + "français", "fr", "french", "fr", "german", "de", "greek", "el",