[C2] Add operand indIndexScale in mips_64.ad

Sun, 29 Jan 2017 21:11:33 +0800

author
fujie
date
Sun, 29 Jan 2017 21:11:33 +0800
changeset 239
75dfcaa53939
parent 238
b0e0b0f97382
child 240
86f031f2e506

[C2] Add operand indIndexScale 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	Sun Jan 29 19:40:13 2017 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Sun Jan 29 21:11:33 2017 +0800
     1.3 @@ -4850,7 +4850,6 @@
     1.4  // Indirect Memory Operand
     1.5  operand indirect(mRegP reg) %{
     1.6    constraint(ALLOC_IN_RC(p_reg));
     1.7 -  op_cost(10);
     1.8    match(reg);
     1.9  
    1.10    format %{ "[$reg] @ indirect" %}
    1.11 @@ -4866,7 +4865,6 @@
    1.12  operand indOffset8(mRegP reg, immL8 off)
    1.13  %{
    1.14    constraint(ALLOC_IN_RC(p_reg));
    1.15 -  op_cost(20);
    1.16    match(AddP reg off);
    1.17  
    1.18    format %{ "[$reg + $off (8-bit)] @ indOffset8" %}
    1.19 @@ -4878,6 +4876,23 @@
    1.20    %}
    1.21  %}
    1.22  
    1.23 +// Indirect Memory Times Scale Plus Index Register
    1.24 +operand indIndexScale(mRegP reg, mRegL lreg, immI2 scale)
    1.25 +%{
    1.26 +  constraint(ALLOC_IN_RC(p_reg));
    1.27 +  match(AddP reg (LShiftL lreg scale));
    1.28 +
    1.29 +  op_cost(10);
    1.30 +  format %{"[$reg + $lreg << $scale] @ indIndexScale" %}
    1.31 +  interface(MEMORY_INTER) %{
    1.32 +    base($reg);
    1.33 +    index($lreg);
    1.34 +    scale($scale);
    1.35 +    disp(0x0);
    1.36 +  %}
    1.37 +%}
    1.38 +
    1.39 +
    1.40  // [base + index + offset] 
    1.41  operand baseIndexOffset8(mRegP base, mRegL index, immL8 off)
    1.42  %{
    1.43 @@ -5357,7 +5372,7 @@
    1.44  
    1.45  //------------------------OPERAND CLASSES--------------------------------------
    1.46  //opclass memory( direct, indirect, indOffset16, indOffset32, indOffset32X, indIndexOffset );
    1.47 -opclass memory( indirect, indirectNarrow, indOffset8, indOffset32, indIndex, load_long_indirect, load_long_indOffset32, baseIndexOffset8, baseIndexOffset8_convI2L, indIndexScaleOffset8, basePosIndexScaleOffset8, indIndexScaleOffsetNarrow, indPosIndexI2LScaleOffset8Narrow, indOffset8Narrow, indIndexOffset8Narrow); 
    1.48 +opclass memory( indirect, indirectNarrow, indOffset8, indOffset32, indIndex, indIndexScale, load_long_indirect, load_long_indOffset32, baseIndexOffset8, baseIndexOffset8_convI2L, indIndexScaleOffset8, basePosIndexScaleOffset8, indIndexScaleOffsetNarrow, indPosIndexI2LScaleOffset8Narrow, indOffset8Narrow, indIndexOffset8Narrow); 
    1.49  
    1.50  
    1.51  //----------PIPELINE-----------------------------------------------------------

mercurial