[C2] Remove unnecessary dsllv in mips_64.ad

Mon, 20 Feb 2017 21:54:25 +0800

author
fujie
date
Mon, 20 Feb 2017 21:54:25 +0800
changeset 320
81a2795d6ebd
parent 319
2d7d048236e1
child 321
efc386e63b2c

[C2] Remove unnecessary dsllv in mips_64.ad

src/cpu/mips/vm/mips_64.ad file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Mon Feb 20 21:35:55 2017 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Mon Feb 20 21:54:25 2017 +0800
     1.3 @@ -10865,8 +10865,12 @@
     1.4          __ dsll(dst_reg, src_reg, shamt);
     1.5      else
     1.6      {
     1.7 -       __ move(AT, shamt);
     1.8 -       __ dsllv(dst_reg, src_reg, AT);
     1.9 +       int sa = low(shamt, 6);
    1.10 +       if (sa < 32) { 
    1.11 +          __ dsll(dst_reg, src_reg, sa);
    1.12 +       } else {
    1.13 +          __ dsll32(dst_reg, src_reg, sa - 32);
    1.14 +       }
    1.15      }
    1.16    %}
    1.17    ins_pipe( ialu_regL_regL );
    1.18 @@ -10886,8 +10890,12 @@
    1.19          __ dsll(dst_reg, src_reg, shamt);
    1.20      else
    1.21      {
    1.22 -       __ move(AT, shamt);
    1.23 -       __ dsllv(dst_reg, src_reg, AT);
    1.24 +       int sa = low(shamt, 6);
    1.25 +       if (sa < 32) { 
    1.26 +          __ dsll(dst_reg, src_reg, sa);
    1.27 +       } else {
    1.28 +          __ dsll32(dst_reg, src_reg, sa - 32);
    1.29 +       }
    1.30      }
    1.31    %}
    1.32    ins_pipe( ialu_regL_regL );
    1.33 @@ -10920,8 +10928,12 @@
    1.34      if (__ is_simm(shamt, 5)) {
    1.35          __ dsll(dst_reg, src_reg, shamt);
    1.36      } else {
    1.37 -       __ move(AT, shamt);
    1.38 -       __ dsllv(dst_reg, src_reg, AT);
    1.39 +       int sa = low(shamt, 6);
    1.40 +       if (sa < 32) { 
    1.41 +          __ dsll(dst_reg, src_reg, sa);
    1.42 +       } else {
    1.43 +          __ dsll32(dst_reg, src_reg, sa - 32);
    1.44 +       }
    1.45      }
    1.46    %}
    1.47    ins_pipe( ialu_regL_regL );

mercurial