Sun, 29 Jan 2017 21:11:33 +0800
[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-----------------------------------------------------------