RFR: 8352675: Support Intel AVX10 converged vector ISA feature detection [v10]
Vladimir Ivanov
vlivanov at openjdk.org
Sat May 3 07:54:47 UTC 2025
On Sat, 3 May 2025 07:26:29 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:
>> - Intel AVX10[1] extends and enhances the capabilities of Intel AVX-512 to benefit all Intel® products and will be the vector ISA of choice moving into the future.
>> - It supports a new ISA versioning scheme which simplifies the existing AVX512 feature enumeration scheme. Feature set supported by an AVX10 ISA version will be supported by all the versions above it.
>> - The initial, fully-featured version of Intel® AVX10 will be enumerated as Version 2 (denoted as Intel® AVX10.2). This will include the new ISA extension over the existing AVX512 instructions.
>> - An early version of Intel® AVX10 (Version 1, or Intel® AVX10.1) that only enumerates the Intel® AVX-512 instruction set at 128, 256, and 512 bits will be enabled on the Granite Rapids Server for software pre-enabling.
>>
>> This patch adds the necessary CPUID feature detection for AVX10 ISA version 1 and 2. In terms of architectural state save restoration, AVX10 is isomorphic to AVX512 support up till Granite Rapids. State components affected by AVX10 extension include SSE, AVX, Opmask, ZMM_Hi256, and Hi16_ZMM registers.
>>
>> The patch has been regressed through tier1 and jvmci tests
>>
>> Please review and share your feedback.
>>
>> Best Regards,
>> Jatin
>>
>> [1] https://www.intel.com/content/www/us/en/content-details/844829/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html
>
> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
>
> Review comments resolution
src/hotspot/cpu/x86/vm_version_x86.cpp line 2867:
> 2865:
> 2866: uint64_t VM_Version::CpuidInfo::feature_flags() const {
> 2867: uint64_t result = 0;
It's unfortunate you migrated away from operating on a local copy. Why don't you declare a local copy (`VM_Version result`) and migrate bit manipulation to bit field accessors on it? `VM_Version::CpuidInfo::feature_flags()` can still return it by value (once you get rid of heap memory allocation, copying becomes trivial).
src/hotspot/share/runtime/abstract_vm_version.hpp line 88:
> 86: static VM_Features _dynamic_cpu_features;
> 87:
> 88: #define SET_CPU_FEATURE(feature) \
Why don't you supersede macros with instance methods on `VM_Version` instead?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24329#discussion_r2072344671
PR Review Comment: https://git.openjdk.org/jdk/pull/24329#discussion_r2072343204
More information about the graal-dev
mailing list