Enable gsswx in store_I_reg_enc for Loongson processors.

Thu, 18 Aug 2016 14:17:07 +0800

author
fujie
date
Thu, 18 Aug 2016 14:17:07 +0800
changeset 82
b571b3a6b5e6
parent 81
d8e0aa0ab460
child 83
b33a8eda439c

Enable gsswx in store_I_reg_enc for Loongson processors.

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 13:51:09 2016 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Thu Aug 18 14:17:07 2016 +0800
     1.3 @@ -2104,21 +2104,34 @@
     1.4       guarantee(scale == 0, "scale is not zero !");
     1.5  
     1.6       if( index != 0 ) {
     1.7 -        __ addu(AT, as_Register(base), as_Register(index));
     1.8          if( Assembler::is_simm16(disp) ) { 
     1.9 -           __ sw(as_Register(src), AT, disp);
    1.10 +           if( UseLoongsonISA && Assembler::is_simm(disp, 8) ) {
    1.11 +              __ gsswx(as_Register(src), as_Register(base), as_Register(index), disp);
    1.12 +           } else {
    1.13 +              __ addu(AT, as_Register(base), as_Register(index));
    1.14 +              __ sw(as_Register(src), AT, disp);
    1.15 +           }
    1.16          } else {
    1.17 +           __ addu(AT, as_Register(base), as_Register(index));
    1.18             __ move(T9, disp);
    1.19 -           __ addu(AT, AT, T9); 
    1.20 -           __ sw(as_Register(src), AT, 0);
    1.21 +           if( UseLoongsonISA ) {
    1.22 +              __ gsswx(as_Register(src), AT, T9, 0);
    1.23 +           } else {
    1.24 +              __ addu(AT, AT, T9); 
    1.25 +              __ sw(as_Register(src), AT, 0);
    1.26 +           }
    1.27          }    
    1.28       } else {
    1.29          if( Assembler::is_simm16(disp) ) { 
    1.30             __ sw(as_Register(src), as_Register(base), disp);
    1.31          } else {
    1.32             __ move(T9, disp);   
    1.33 -           __ addu(AT, as_Register(base), T9); 
    1.34 -           __ sw(as_Register(src), AT, 0);
    1.35 +           if( UseLoongsonISA ) {
    1.36 +              __ gsswx(as_Register(src), as_Register(base), T9, 0);
    1.37 +           } else {
    1.38 +              __ addu(AT, as_Register(base), T9); 
    1.39 +              __ sw(as_Register(src), AT, 0);
    1.40 +           }
    1.41          }    
    1.42       }
    1.43    %}

mercurial