< prev index next >
src/hotspot/cpu/x86/macroAssembler_x86.cpp
Print this page
rev 51979 : 8211375: Minimal VM build failures after JDK-8211251 (Default mask register for avx512 instructions)
Reviewed-by: kvn
*** 3264,3286 ****
lea(rscratch1, src);
movq(dst, Address(rscratch1, 0));
}
}
void MacroAssembler::setvectmask(Register dst, Register src) {
! guarantee(PostLoopMultiversioning == true, "must be");
Assembler::movl(dst, 1);
Assembler::shlxl(dst, dst, src);
Assembler::decl(dst);
Assembler::kmovdl(k1, dst);
Assembler::movl(dst, src);
}
void MacroAssembler::restorevectmask() {
! guarantee(PostLoopMultiversioning == true, "must be");
Assembler::knotwl(k1, k0);
}
void MacroAssembler::movdbl(XMMRegister dst, AddressLiteral src) {
if (reachable(src)) {
if (UseXmmLoadAndClearUpper) {
movsd (dst, as_Address(src));
--- 3264,3288 ----
lea(rscratch1, src);
movq(dst, Address(rscratch1, 0));
}
}
+ #ifdef COMPILER2
void MacroAssembler::setvectmask(Register dst, Register src) {
! guarantee(PostLoopMultiversioning, "must be");
Assembler::movl(dst, 1);
Assembler::shlxl(dst, dst, src);
Assembler::decl(dst);
Assembler::kmovdl(k1, dst);
Assembler::movl(dst, src);
}
void MacroAssembler::restorevectmask() {
! guarantee(PostLoopMultiversioning, "must be");
Assembler::knotwl(k1, k0);
}
+ #endif // COMPILER2
void MacroAssembler::movdbl(XMMRegister dst, AddressLiteral src) {
if (reachable(src)) {
if (UseXmmLoadAndClearUpper) {
movsd (dst, as_Address(src));
*** 5026,5041 ****
--- 5028,5046 ----
}
}
// Clear upper bits of YMM registers to avoid SSE <-> AVX transition penalty.
vzeroupper();
// Reset k1 to 0xffff.
+
+ #ifdef COMPILER2
if (PostLoopMultiversioning && VM_Version::supports_evex()) {
push(rcx);
movl(rcx, 0xffff);
kmovwl(k1, rcx);
pop(rcx);
}
+ #endif // COMPILER2
#ifndef _LP64
// Either restore the x87 floating pointer control word after returning
// from the JNI call or verify that it wasn't changed.
if (CheckJNICalls) {
< prev index next >