Thu, 18 Aug 2016 10:16:47 +0800
Add operand baseIndexOffset8_convI2L in mips_64.add.
src/cpu/mips/vm/mips_64.ad | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/mips/vm/mips_64.ad Thu Aug 18 09:58:51 2016 +0800 1.2 +++ b/src/cpu/mips/vm/mips_64.ad Thu Aug 18 10:16:47 2016 +0800 1.3 @@ -4066,6 +4066,22 @@ 1.4 %} 1.5 %} 1.6 1.7 +// [base + index + offset] 1.8 +operand baseIndexOffset8_convI2L(mRegP base, mRegI index, immL8 off) 1.9 +%{ 1.10 + constraint(ALLOC_IN_RC(p_reg)); 1.11 + op_cost(5); 1.12 + match(AddP (AddP base (ConvI2L index)) off); 1.13 + 1.14 + format %{ "[$base + $index + $off (8-bit)] @ baseIndexOffset8_convI2L" %} 1.15 + interface(MEMORY_INTER) %{ 1.16 + base($base); 1.17 + index($index); 1.18 + scale(0x0); 1.19 + disp($off); 1.20 + %} 1.21 +%} 1.22 + 1.23 //FIXME: I think it's better to limit the immI to be 16-bit at most! 1.24 // Indirect Memory Plus Long Offset Operand 1.25 operand indOffset32(mRegP reg, immL32 off) %{ 1.26 @@ -4414,7 +4430,7 @@ 1.27 1.28 //------------------------OPERAND CLASSES-------------------------------------- 1.29 //opclass memory( direct, indirect, indOffset16, indOffset32, indOffset32X, indIndexOffset ); 1.30 -opclass memory( indirect, indirectNarrow, indOffset8, indOffset32, indIndex, load_long_indirect, load_long_indOffset32, baseIndexOffset8); 1.31 +opclass memory( indirect, indirectNarrow, indOffset8, indOffset32, indIndex, load_long_indirect, load_long_indOffset32, baseIndexOffset8, baseIndexOffset8_convI2L); 1.32 1.33 1.34 //----------PIPELINE-----------------------------------------------------------