--- old/src/cpu/x86/vm/stubGenerator_x86_64.cpp 2015-04-06 14:41:05.789279100 -0700 +++ new/src/cpu/x86/vm/stubGenerator_x86_64.cpp 2015-04-06 14:41:05.582258400 -0700 @@ -262,6 +262,10 @@ __ movptr(r13_save, r13); __ movptr(r14_save, r14); __ movptr(r15_save, r15); + if (UseAVX > 2) { + __ movl(rbx, 0xffff); + __ kmovql(k1, rbx); + } #ifdef _WIN64 for (int i = 6; i <= 15; i++) { __ movdqu(xmm_save(i), as_XMMRegister(i)); @@ -1318,7 +1322,10 @@ Label L_end; // Copy 64-bytes per iteration __ BIND(L_loop); - if (UseAVX >= 2) { + if (UseAVX > 2) { + __ evmovdqu(xmm0, Address(end_from, qword_count, Address::times_8, -56), Assembler::AVX_512bit); + __ evmovdqu(Address(end_to, qword_count, Address::times_8, -56), xmm0, Assembler::AVX_512bit); + } else if (UseAVX == 2) { __ vmovdqu(xmm0, Address(end_from, qword_count, Address::times_8, -56)); __ vmovdqu(Address(end_to, qword_count, Address::times_8, -56), xmm0); __ vmovdqu(xmm1, Address(end_from, qword_count, Address::times_8, -24));