[15] RFR (S): 8238696: x86: Enumerate all detected CPU features in VM_Version feature string

David Holmes david.holmes at oracle.com
Tue Feb 11 04:34:19 UTC 2020


Hi Vladimir,

This all seems reasonable to me.

Thanks,
David

On 11/02/2020 12:12 am, Vladimir Ivanov wrote:
> Thanks for taking a look, David.
> 
> Updated webrev:
>    http://cr.openjdk.java.net/~vlivanov/8238696/webrev.01/
> 
>>> http://cr.openjdk.java.net/~vlivanov/8238696/webrev.00/
>>> https://bugs.openjdk.java.net/browse/JDK-8238696
>>>
>>> Abstract_VM_Version::features_string() doesn't contain all the CPU 
>>> features detected by the JVM on x86 (for example, for AVX-512 only 
>>> AVX-512F is included as "evex").
>>>
>>> The fix adds missing features to the list [1].
>>
>> The function naming that you have changed for 
>> supports_avx512_vpclmulqdq was explicitly requested by Vladimir K.:
>>
>> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2019-December/036326.html 
>>
>>
>> If anything I would suggest supports_vpopcntdq() should have the 
>> avx512 part added.
> 
> Makes sense. Also, decided to rename VNNI, VAES, and VBMI2. They are 
> listed in the manual as part of AVX512.
> 
>> The actual expansion of the feature string seems okay. It does make me 
>> wonder why these items have been left out previously.
> 
> I believe it was just overlooked. Added a comment near cpu feature 
> constant declarations.
> 
> Also, introduced a check to ensure the temporary on-stack buffer is 
> large enough.
> 
> Best regards,
> Vladimir Ivanov
>>
>> Thanks,
>> David
>>
>>> Testing: manual (-Xlog:os+cpu=trace output on different hardware),
>>>           hs-precheckin-comp, hs-tier1, hs-tier2
>>>
>>> Best regards,
>>> Vladimir Ivanov
>>>
>>> [1] $ java -Xlog:os+cpu=trace -XX:UseAVX=3 -version
>>>
>>> ...
>>> [0.010s][info][os,cpu] UseSSE=4  UseAVX=3  UseAES=1  MaxVectorSize=64
>>> ...
>>> [0.011s][info][os,cpu] CPU:total 8 (initial active 8) (4 cores per 
>>> cpu, 2 threads per core) family 6 model 85 stepping 4, cmov, cx8, 
>>> fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, 
>>> vzeroupper, avx, avx2, aes, clmul, erms, rtm, 3dnowpref, lzcnt, ht, 
>>> tsc, bmi1, bmi2, adx, avx512f, avx512dq, avx512cd, avx512bw, 
>>> avx512vl, fma, clflush, clflushopt, clwb
>>> ...
>>> [0.011s][info][os,cpu] flags        : fpu vme de pse tsc msr pae mce 
>>> cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss 
>>> ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good 
>>> nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 
>>> pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave 
>>> avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault 
>>> invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority 
>>> ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm 
>>> mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd 
>>> avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat umip pku ospke 
>>> md_clear
>>> ...


More information about the hotspot-dev mailing list