< prev index next >

hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp

Print this page
rev 7347 : 8078113: 8011102 changes may cause incorrect results
Summary: replace Vzeroupper instruction in stubs with zeroing only used ymm registers.
Reviewed-by: kvn
Contributed-by: sandhya.viswanathan@intel.com

*** 1326,1336 **** } __ addptr(qword_count, 4); __ BIND(L_end); if (UseAVX >= 2) { // clean upper bits of YMM registers ! __ vzeroupper(); } } else { // Copy 32-bytes per iteration __ BIND(L_loop); __ movq(to, Address(end_from, qword_count, Address::times_8, -24)); --- 1326,1337 ---- } __ addptr(qword_count, 4); __ BIND(L_end); if (UseAVX >= 2) { // clean upper bits of YMM registers ! __ vpxor(xmm0, xmm0); ! __ vpxor(xmm1, xmm1); } } else { // Copy 32-bytes per iteration __ BIND(L_loop); __ movq(to, Address(end_from, qword_count, Address::times_8, -24));
*** 1403,1413 **** } __ subptr(qword_count, 4); __ BIND(L_end); if (UseAVX >= 2) { // clean upper bits of YMM registers ! __ vzeroupper(); } } else { // Copy 32-bytes per iteration __ BIND(L_loop); __ movq(to, Address(from, qword_count, Address::times_8, 24)); --- 1404,1415 ---- } __ subptr(qword_count, 4); __ BIND(L_end); if (UseAVX >= 2) { // clean upper bits of YMM registers ! __ vpxor(xmm0, xmm0); ! __ vpxor(xmm1, xmm1); } } else { // Copy 32-bytes per iteration __ BIND(L_loop); __ movq(to, Address(from, qword_count, Address::times_8, 24));
< prev index next >