1.1 --- a/src/cpu/mips/vm/mips_64.ad Wed Feb 22 22:24:24 2017 +0800 1.2 +++ b/src/cpu/mips/vm/mips_64.ad Thu Feb 23 05:09:55 2017 -0500 1.3 @@ -10996,7 +10996,6 @@ 1.4 1.5 // Shift Right Long 1.6 instruct sarL_Reg_imm(mRegL dst, mRegL src, immI8 shift) %{ 1.7 - //predicate(UseNewLongLShift); 1.8 match(Set dst (RShiftL src shift)); 1.9 ins_cost(100); 1.10 format %{ "sarL $dst, $src, $shift @ sarL_Reg_imm" %} 1.11 @@ -11018,6 +11017,20 @@ 1.12 ins_pipe( ialu_regL_regL ); 1.13 %} 1.14 1.15 +instruct sarL2I_Reg_immI_32_63(mRegI dst, mRegL src, immI_32_63 shift) %{ 1.16 + match(Set dst (ConvL2I (RShiftL src shift))); 1.17 + ins_cost(100); 1.18 + format %{ "sarL $dst, $src, $shift @ sarL2I_Reg_immI_32_63" %} 1.19 + ins_encode %{ 1.20 + Register src_reg = as_Register($src$$reg); 1.21 + Register dst_reg = as_Register($dst$$reg); 1.22 + int shamt = $shift$$constant; 1.23 + 1.24 + __ dsra32(dst_reg, src_reg, shamt - 32); 1.25 + %} 1.26 + ins_pipe( ialu_regL_regL ); 1.27 +%} 1.28 + 1.29 // Shift Right Long arithmetically 1.30 instruct sarL_Reg_Reg(mRegL dst, mRegL src, mRegI shift) %{ 1.31 //predicate(UseNewLongLShift);