< prev index next >

src/cpu/x86/vm/vm_version_x86.cpp

Print this page

        

*** 501,510 **** --- 501,511 ---- VM_Version::clean_cpuFeatures(); UseAVX = saved_useavx; UseSSE = saved_usesse; __ bind(wrapup); + __ vzeroupper(); __ popf(); __ pop(rsi); __ pop(rbx); __ pop(rbp); __ ret(0);
*** 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); --- 917,956 ---- 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);
*** 1149,1159 **** --- 1170,1188 ---- } } if(FLAG_IS_DEFAULT(AllocatePrefetchInstr) && supports_3dnow_prefetch()) { AllocatePrefetchInstr = 3; } + if ((cpu_family() == 0x06) && + ((extended_cpu_model() == 0x57) || // Xeon Phi 3200/5200/7200 + (extended_cpu_model() == 0x85))) { // Future Xeon Phi + if (FLAG_IS_DEFAULT(UseVzeroupper)) { + FLAG_SET_DEFAULT(UseVzeroupper, false); + } } + } + #ifdef _LP64 if (UseSSE42Intrinsics) { if (FLAG_IS_DEFAULT(UseVectorizedMismatchIntrinsic)) { UseVectorizedMismatchIntrinsic = true;
< prev index next >