src/cpu/mips/vm/mips_64.ad

changeset 332
0b618b424c57
parent 331
592fd7ca9efb
child 333
f5c309d7d194
     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);

mercurial