8215888: Register to register spill may use AVX 512 move instruction on unsupported platform
Reviewed-by: vlivanov, thartmann
This commit is contained in:
parent
a97d8a9a76
commit
e1071d80bd
@ -649,7 +649,7 @@ void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_cod
|
||||
|
||||
case T_FLOAT: {
|
||||
if (dest->is_single_xmm()) {
|
||||
if (LP64_ONLY(UseAVX < 2 &&) c->is_zero_float()) {
|
||||
if (LP64_ONLY(UseAVX <= 2 &&) c->is_zero_float()) {
|
||||
__ xorps(dest->as_xmm_float_reg(), dest->as_xmm_float_reg());
|
||||
} else {
|
||||
__ movflt(dest->as_xmm_float_reg(),
|
||||
@ -671,7 +671,7 @@ void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_cod
|
||||
|
||||
case T_DOUBLE: {
|
||||
if (dest->is_double_xmm()) {
|
||||
if (LP64_ONLY(UseAVX < 2 &&) c->is_zero_double()) {
|
||||
if (LP64_ONLY(UseAVX <= 2 &&) c->is_zero_double()) {
|
||||
__ xorpd(dest->as_xmm_double_reg(), dest->as_xmm_double_reg());
|
||||
} else {
|
||||
__ movdbl(dest->as_xmm_double_reg(),
|
||||
|
@ -2924,11 +2924,11 @@ instruct MoveVecX2Leg(legVecX dst, vecX src) %{
|
||||
match(Set dst src);
|
||||
format %{ "movdqu $dst,$src\t! load vector (16 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2939,11 +2939,11 @@ instruct MoveLeg2VecX(vecX dst, legVecX src) %{
|
||||
match(Set dst src);
|
||||
format %{ "movdqu $dst,$src\t! load vector (16 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2966,11 +2966,11 @@ instruct MoveVecY2Leg(legVecY dst, vecY src) %{
|
||||
match(Set dst src);
|
||||
format %{ "vmovdqu $dst,$src\t! load vector (32 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2981,11 +2981,11 @@ instruct MoveLeg2VecY(vecY dst, legVecY src) %{
|
||||
match(Set dst src);
|
||||
format %{ "vmovdqu $dst,$src\t! load vector (32 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
|
Loading…
x
Reference in New Issue
Block a user