Add operand baseIndexOffset8_convI2L in mips_64.add.

Thu, 18 Aug 2016 10:16:47 +0800

author
fujie
date
Thu, 18 Aug 2016 10:16:47 +0800
changeset 72
594eddc9987b
parent 71
a23d1c03ce7a
child 73
7b670693abd3

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-----------------------------------------------------------

mercurial