< prev index next >

src/cpu/x86/vm/vm_version_x86.cpp

Print this page

        

*** 467,476 **** --- 467,477 ---- __ addptr(rsp, 64); #endif // _LP64 __ evmovdqul(xmm7, Address(rsp, 0), Assembler::AVX_512bit); __ addptr(rsp, 64); #endif // _WINDOWS + __ vzeroupper(); VM_Version::clean_cpuFeatures(); UseAVX = saved_useavx; UseSSE = saved_usesse; __ jmp(wrapup); }
*** 496,505 **** --- 497,507 ---- __ addptr(rsp, 32); #endif // _LP64 __ vmovdqu(xmm7, Address(rsp, 0)); __ addptr(rsp, 32); #endif // _WINDOWS + __ vzeroupper(); VM_Version::clean_cpuFeatures(); UseAVX = saved_useavx; UseSSE = saved_usesse; __ bind(wrapup);
*** 617,637 **** } if (UseAVX < 2) _features &= ~CPU_AVX2; ! if (UseAVX < 1) _features &= ~CPU_AVX; if (!UseAES && !FLAG_IS_DEFAULT(UseAES)) _features &= ~CPU_AES; if (logical_processors_per_package() == 1) { // HT processor could be installed on a system which doesn't support HT. _features &= ~CPU_HT; } char buf[256]; jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", cores_per_cpu(), threads_per_core(), cpu_family(), _model, _stepping, (supports_cmov() ? ", cmov" : ""), --- 619,649 ---- } if (UseAVX < 2) _features &= ~CPU_AVX2; ! if (UseAVX < 1) { _features &= ~CPU_AVX; + _features &= ~CPU_VZEROUPPER; + } if (!UseAES && !FLAG_IS_DEFAULT(UseAES)) _features &= ~CPU_AES; if (logical_processors_per_package() == 1) { // HT processor could be installed on a system which doesn't support HT. _features &= ~CPU_HT; } + if( is_intel() ) { // Intel cpus specific settings + if ((cpu_family() == 0x06) && + ((extended_cpu_model() == 0x57) || // Xeon Phi 3200/5200/7200 + (extended_cpu_model() == 0x85))) { // Future Xeon Phi + _features &= ~CPU_VZEROUPPER; + } + } + char buf[256]; jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", cores_per_cpu(), threads_per_core(), cpu_family(), _model, _stepping, (supports_cmov() ? ", cmov" : ""),
*** 916,935 **** if (MaxVectorSize > 0) { if (!is_power_of_2(MaxVectorSize)) { warning("MaxVectorSize must be a power of 2"); FLAG_SET_DEFAULT(MaxVectorSize, 64); } ! if (MaxVectorSize > 64) { ! FLAG_SET_DEFAULT(MaxVectorSize, 64); } ! if (MaxVectorSize > 16 && (UseAVX == 0 || !os_supports_avx_vectors())) { // 32 bytes vectors (in YMM) are only supported with AVX+ FLAG_SET_DEFAULT(MaxVectorSize, 16); } ! if (UseSSE < 2) { ! // Vectors (in XMM) are only supported with SSE2+ ! FLAG_SET_DEFAULT(MaxVectorSize, 0); } #if defined(COMPILER2) && defined(ASSERT) if (supports_avx() && PrintMiscellaneous && Verbose && TraceNewVectors) { tty->print_cr("State of YMM registers after signal handle:"); int nreg = 2 LP64_ONLY(+2); --- 928,967 ---- if (MaxVectorSize > 0) { if (!is_power_of_2(MaxVectorSize)) { warning("MaxVectorSize must be a power of 2"); FLAG_SET_DEFAULT(MaxVectorSize, 64); } ! if (UseSSE < 2) { ! // Vectors (in XMM) are only supported with SSE2+ ! if (MaxVectorSize > 0) { ! if (!FLAG_IS_DEFAULT(MaxVectorSize)) ! warning("MaxVectorSize must be 0"); ! FLAG_SET_DEFAULT(MaxVectorSize, 0); } ! } ! else if (UseAVX == 0 || !os_supports_avx_vectors()) { // 32 bytes vectors (in YMM) are only supported with AVX+ + if (MaxVectorSize > 16) { + if (!FLAG_IS_DEFAULT(MaxVectorSize)) + warning("MaxVectorSize must be <= 16"); FLAG_SET_DEFAULT(MaxVectorSize, 16); } ! } ! else if (UseAVX == 1 || UseAVX == 2) { ! // 64 bytes vectors (in ZMM) are only supported with AVX 3 ! if (MaxVectorSize > 32) { ! if (!FLAG_IS_DEFAULT(MaxVectorSize)) ! warning("MaxVectorSize must be <= 32"); ! FLAG_SET_DEFAULT(MaxVectorSize, 32); ! } ! } ! else if (UseAVX > 2 ) { ! if (MaxVectorSize > 64) { ! if (!FLAG_IS_DEFAULT(MaxVectorSize)) ! warning("MaxVectorSize must be <= 64"); ! FLAG_SET_DEFAULT(MaxVectorSize, 64); ! } } #if defined(COMPILER2) && defined(ASSERT) if (supports_avx() && PrintMiscellaneous && Verbose && TraceNewVectors) { tty->print_cr("State of YMM registers after signal handle:"); int nreg = 2 LP64_ONLY(+2);
< prev index next >