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(r12, xtmp3);
__ vzeroupper();
__ leave();
__ ret(0);

View File

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

View File

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