8320206: Some intrinsics/stubs missing vzeroupper on x86_64

Reviewed-by: kvn, jbhateja
This commit is contained in:
Sandhya Viswanathan 2023-11-17 20:05:09 +00:00
parent b5a7562bd1
commit 9b372e28ce
3 changed files with 7 additions and 0 deletions

View File

@ -330,6 +330,7 @@ address StubGenerator::generate_updateBytesAdler32() {
__ movq(r13, xtmp4); __ movq(r13, xtmp4);
__ movq(r12, xtmp3); __ movq(r12, xtmp3);
__ vzeroupper();
__ leave(); __ leave();
__ ret(0); __ ret(0);

View File

@ -291,6 +291,9 @@ address StubGenerator::generate_chacha20Block_avx() {
// registers. That length should be returned through %rax. // registers. That length should be returned through %rax.
__ mov64(rax, outlen); __ mov64(rax, outlen);
if (outlen == 256) {
__ vzeroupper();
}
__ leave(); __ leave();
__ ret(0); __ ret(0);
return start; return start;
@ -460,6 +463,7 @@ address StubGenerator::generate_chacha20Block_avx512() {
// and that length should be returned through %rax. // and that length should be returned through %rax.
__ mov64(rax, 1024); __ mov64(rax, 1024);
__ vzeroupper();
__ leave(); __ leave();
__ ret(0); __ ret(0);
return start; return start;

View File

@ -1112,6 +1112,7 @@ bool LibraryCallKit::inline_countPositives() {
Node* ba_start = array_element_address(ba, offset, T_BYTE); Node* ba_start = array_element_address(ba, offset, T_BYTE);
Node* result = new CountPositivesNode(control(), memory(TypeAryPtr::BYTES), ba_start, len); Node* result = new CountPositivesNode(control(), memory(TypeAryPtr::BYTES), ba_start, len);
set_result(_gvn.transform(result)); set_result(_gvn.transform(result));
clear_upper_avx();
return true; return true;
} }
@ -1366,6 +1367,7 @@ bool LibraryCallKit::inline_string_indexOfChar(StrIntrinsicNode::ArgEnc ae) {
set_control(_gvn.transform(region)); set_control(_gvn.transform(region));
record_for_igvn(region); record_for_igvn(region);
set_result(_gvn.transform(phi)); set_result(_gvn.transform(phi));
clear_upper_avx();
return true; return true;
} }