OpenJDK / jdk / jdk
changeset 57235:666fa504b60c
8235288: AVX 512 instructions inadvertently used on Xeon for small vector width operations
Reviewed-by: kvn, vlivanov
author | sviswanathan |
---|---|
date | Wed, 04 Dec 2019 14:55:15 -0800 |
parents | c22583a70542 |
children | e7f7be79ba52 |
files | src/hotspot/cpu/x86/macroAssembler_x86.hpp |
diffstat | 1 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/cpu/x86/macroAssembler_x86.hpp Wed Dec 04 14:44:29 2019 -0800 +++ b/src/hotspot/cpu/x86/macroAssembler_x86.hpp Wed Dec 04 14:55:15 2019 -0800 @@ -1356,7 +1356,7 @@ void vpxor(XMMRegister dst, Address src) { Assembler::vpxor(dst, dst, src, true); } void vinserti128(XMMRegister dst, XMMRegister nds, XMMRegister src, uint8_t imm8) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinserti32x4(dst, dst, src, imm8); } else if (UseAVX > 1) { // vinserti128 is available only in AVX2 @@ -1367,7 +1367,7 @@ } void vinserti128(XMMRegister dst, XMMRegister nds, Address src, uint8_t imm8) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinserti32x4(dst, dst, src, imm8); } else if (UseAVX > 1) { // vinserti128 is available only in AVX2 @@ -1378,7 +1378,7 @@ } void vextracti128(XMMRegister dst, XMMRegister src, uint8_t imm8) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextracti32x4(dst, src, imm8); } else if (UseAVX > 1) { // vextracti128 is available only in AVX2 @@ -1389,7 +1389,7 @@ } void vextracti128(Address dst, XMMRegister src, uint8_t imm8) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextracti32x4(dst, src, imm8); } else if (UseAVX > 1) { // vextracti128 is available only in AVX2 @@ -1414,7 +1414,7 @@ } void vinsertf128_high(XMMRegister dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinsertf32x4(dst, dst, src, 1); } else { Assembler::vinsertf128(dst, dst, src, 1); @@ -1422,7 +1422,7 @@ } void vinsertf128_high(XMMRegister dst, Address src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinsertf32x4(dst, dst, src, 1); } else { Assembler::vinsertf128(dst, dst, src, 1); @@ -1430,7 +1430,7 @@ } void vextractf128_high(XMMRegister dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextractf32x4(dst, src, 1); } else { Assembler::vextractf128(dst, src, 1); @@ -1438,7 +1438,7 @@ } void vextractf128_high(Address dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextractf32x4(dst, src, 1); } else { Assembler::vextractf128(dst, src, 1); @@ -1480,7 +1480,7 @@ } void vinsertf128_low(XMMRegister dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinsertf32x4(dst, dst, src, 0); } else { Assembler::vinsertf128(dst, dst, src, 0); @@ -1488,7 +1488,7 @@ } void vinsertf128_low(XMMRegister dst, Address src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vinsertf32x4(dst, dst, src, 0); } else { Assembler::vinsertf128(dst, dst, src, 0); @@ -1496,7 +1496,7 @@ } void vextractf128_low(XMMRegister dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextractf32x4(dst, src, 0); } else { Assembler::vextractf128(dst, src, 0); @@ -1504,7 +1504,7 @@ } void vextractf128_low(Address dst, XMMRegister src) { - if (UseAVX > 2) { + if (UseAVX > 2 && VM_Version::supports_avx512novl()) { Assembler::vextractf32x4(dst, src, 0); } else { Assembler::vextractf128(dst, src, 0);