Enable gssdxc1 in store_D_reg_enc for Loongson processors.

Thu, 18 Aug 2016 13:51:09 +0800

author
fujie
date
Thu, 18 Aug 2016 13:51:09 +0800
changeset 81
d8e0aa0ab460
parent 80
61c429e80c96
child 82
b571b3a6b5e6

Enable gssdxc1 in store_D_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:38:41 2016 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Thu Aug 18 13:51:09 2016 +0800
     1.3 @@ -2804,7 +2804,7 @@
     1.4          } else {
     1.5             __ move(T9, disp);   
     1.6             if( UseLoongsonISA ) {
     1.7 -              gsldxc1(dst_reg, as_Register(base), T9, 0);
     1.8 +              __ gsldxc1(dst_reg, as_Register(base), T9, 0);
     1.9             } else {
    1.10                __ addu(AT, as_Register(base), T9); 
    1.11                __ ldc1(dst_reg, AT, 0);
    1.12 @@ -2824,21 +2824,34 @@
    1.13       guarantee(scale == 0, "scale is not zero !");
    1.14  
    1.15       if( index != 0 ) {
    1.16 -        __ daddu(AT, as_Register(base), as_Register(index));
    1.17          if( Assembler::is_simm16(disp) ) { 
    1.18 -           __ sdc1(src_reg, AT, disp);
    1.19 +           if( UseLoongsonISA && Assembler::is_simm(disp, 8) ) {
    1.20 +              __ gssdxc1(src_reg, as_Register(base), as_Register(index), disp);
    1.21 +           } else {
    1.22 +              __ daddu(AT, as_Register(base), as_Register(index));
    1.23 +              __ sdc1(src_reg, AT, disp);
    1.24 +           }
    1.25          } else {
    1.26 +           __ daddu(AT, as_Register(base), as_Register(index));
    1.27             __ move(T9, disp);
    1.28 -           __ addu(AT, AT, T9); 
    1.29 -           __ sdc1(src_reg, AT, 0);
    1.30 +           if( UseLoongsonISA ) {
    1.31 +              __ gssdxc1(src_reg, AT, T9, 0);
    1.32 +           } else {
    1.33 +              __ addu(AT, AT, T9); 
    1.34 +              __ sdc1(src_reg, AT, 0);
    1.35 +           }
    1.36          }    
    1.37       } else {
    1.38          if( Assembler::is_simm16(disp) ) { 
    1.39             __ sdc1(src_reg, as_Register(base), disp);
    1.40          } else {
    1.41             __ move(T9, disp);   
    1.42 -           __ addu(AT, as_Register(base), T9); 
    1.43 -           __ sdc1(src_reg, AT, 0);
    1.44 +           if( UseLoongsonISA ) {
    1.45 +              __ gssdxc1(src_reg, as_Register(base), T9, 0);
    1.46 +           } else {
    1.47 +              __ addu(AT, as_Register(base), T9); 
    1.48 +              __ sdc1(src_reg, AT, 0);
    1.49 +           }
    1.50          }    
    1.51       }
    1.52    %}

mercurial