< prev index next >
src/cpu/x86/vm/stubGenerator_x86_64.cpp
Print this page
*** 400,409 ****
--- 400,412 ----
// restore rsp
__ addptr(rsp, -rsp_after_call_off * wordSize);
// return
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ pop(rbp);
__ ret(0);
// handle return types different from T_INT
__ BIND(is_long);
*** 1552,1561 ****
--- 1555,1567 ----
__ BIND(L_exit);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
copy_bytes_forward(end_from, end_to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 1641,1659 ****
--- 1647,1671 ----
__ jcc(Assembler::notZero, L_copy_8_bytes);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jbyte_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 1744,1753 ****
--- 1756,1768 ----
__ BIND(L_exit);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
copy_bytes_forward(end_from, end_to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 1769,1778 ****
--- 1784,1796 ----
__ enter(); // required for proper stackwalking of RuntimeStub frame
__ generate_fill(t, aligned, to, value, count, rax, xmm0);
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 1845,1863 ****
--- 1863,1887 ----
__ jcc(Assembler::notZero, L_copy_8_bytes);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
restore_arg_regs();
inc_counter_np(SharedRuntime::_jshort_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 1943,1952 ****
--- 1967,1979 ----
if (is_oop) {
gen_write_ref_array_post_barrier(saved_to, dword_count, rax);
}
restore_arg_regs();
inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ xorptr(rax, rax); // return 0
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
*** 2028,2037 ****
--- 2055,2067 ----
__ jmp(L_exit);
}
restore_arg_regs();
inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
// Copy in multi-bytes chunks
copy_bytes_backward(from, to, qword_count, rax, L_copy_bytes, L_copy_8_bytes);
*** 2041,2050 ****
--- 2071,2083 ----
gen_write_ref_array_post_barrier(to, dword_count, rax);
}
restore_arg_regs();
inc_counter_np(SharedRuntime::_jint_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 2118,2127 ****
--- 2151,2163 ----
__ jmp(L_exit);
} else {
restore_arg_regs();
inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
}
// Copy in multi-bytes chunks
*** 2135,2144 ****
--- 2171,2183 ----
if (is_oop) {
inc_counter_np(SharedRuntime::_oop_array_copy_ctr); // Update counter after rscratch1 is free
} else {
inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free
}
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ xorptr(rax, rax); // return 0
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
*** 2201,2210 ****
--- 2240,2252 ----
__ jmp(L_exit);
} else {
restore_arg_regs();
inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free
__ xorptr(rax, rax); // return 0
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
}
// Copy in multi-bytes chunks
*** 2218,2227 ****
--- 2260,2272 ----
if (is_oop) {
inc_counter_np(SharedRuntime::_oop_array_copy_ctr); // Update counter after rscratch1 is free
} else {
inc_counter_np(SharedRuntime::_jlong_array_copy_ctr); // Update counter after rscratch1 is free
}
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ xorptr(rax, rax); // return 0
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
*** 3773,3782 ****
--- 3818,3830 ----
__ sha256_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
buf, state, ofs, limit, rsp, multi_block, shuf_mask);
}
__ addptr(rsp, 4 * wordSize);
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave();
__ ret(0);
return start;
}
*** 3806,3815 ****
--- 3854,3867 ----
__ enter();
__ sha512_AVX2(msg, state0, state1, msgtmp0, msgtmp1, msgtmp2, msgtmp3, msgtmp4,
buf, state, ofs, limit, rsp, multi_block, shuf_mask);
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
+
__ leave();
__ ret(0);
return start;
}
*** 4279,4289 ****
__ jmp(L_ghash_loop);
__ BIND(L_exit);
__ pshufb(xmm_temp6, xmm_temp10); // Byte swap 16-byte result
__ movdqu(Address(state, 0), xmm_temp6); // store the result
-
__ leave();
__ ret(0);
return start;
}
--- 4331,4340 ----
*** 4319,4328 ****
--- 4370,4382 ----
__ enter(); // required for proper stackwalking of RuntimeStub frame
__ kernel_crc32(crc, buf, len, table, tmp);
__ movl(rax, crc);
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 4378,4387 ****
--- 4432,4444 ----
__ movl(rax, crc);
#ifdef _WIN64
__ pop(z);
__ pop(y);
#endif
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave(); // required for proper stackwalking of RuntimeStub frame
__ ret(0);
return start;
}
*** 4491,4500 ****
--- 4548,4560 ----
const XMMRegister vec0 = xmm0;
const XMMRegister vec1 = xmm1;
const XMMRegister vec2 = xmm2;
__ vectorized_mismatch(obja, objb, length, scale, result, tmp1, tmp2, vec0, vec1, vec2);
+ if (VM_Version::supports_avx()) {
+ __ vzeroupper();
+ }
__ leave();
__ ret(0);
return start;
< prev index next >