[Interpreter] Remove the redundant ldc1 for TemplateTable::dload.

Wed, 20 Sep 2017 09:38:17 +0800

author
fujie
date
Wed, 20 Sep 2017 09:38:17 +0800
changeset 6887
59aca571c8d0
parent 6886
2fa8027581f6
child 6888
b6a542947da3

[Interpreter] Remove the redundant ldc1 for TemplateTable::dload.

src/cpu/mips/vm/templateTable_mips_64.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/templateTable_mips_64.cpp	Wed Sep 20 09:24:48 2017 +0800
     1.2 +++ b/src/cpu/mips/vm/templateTable_mips_64.cpp	Wed Sep 20 09:38:17 2017 +0800
     1.3 @@ -506,7 +506,6 @@
     1.4    transition(vtos, dtos);
     1.5    locals_index(T2);
     1.6    __ ldc1(FSF, T2, -wordSize);
     1.7 -  __ ldc1(SSF, T2, 0);
     1.8  }
     1.9  
    1.10  // used register T2
    1.11 @@ -1272,44 +1271,18 @@
    1.12  
    1.13  void TemplateTable::iop2(Operation op) {
    1.14    transition(itos, itos);
    1.15 +
    1.16 +  __ pop_i(SSR);
    1.17    switch (op) {
    1.18 -    case add  :
    1.19 -      __ pop_i(SSR);
    1.20 -      __ addu32(FSR, SSR, FSR);
    1.21 -      break;
    1.22 -    case sub  :
    1.23 -      __ pop_i(SSR);
    1.24 -      __ subu32(FSR, SSR, FSR);
    1.25 -      break;
    1.26 -    case mul  :
    1.27 -      __ lw(SSR, SP, 0);
    1.28 -      __ daddi(SP, SP, wordSize);
    1.29 -                        __ mul(FSR, SSR, FSR);
    1.30 -      break;
    1.31 -    case _and :
    1.32 -      __ pop_i(SSR);
    1.33 -      __ andr(FSR, SSR, FSR);
    1.34 -      break;
    1.35 -    case _or  :
    1.36 -      __ pop_i(SSR);
    1.37 -      __ orr(FSR, SSR, FSR);
    1.38 -      break;
    1.39 -    case _xor :
    1.40 -      __ pop_i(SSR);
    1.41 -      __ xorr(FSR, SSR, FSR);
    1.42 -      break;
    1.43 -    case shl  :
    1.44 -      __ pop_i(SSR);
    1.45 -      __ sllv(FSR, SSR, FSR);
    1.46 -      break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.47 -    case shr  :
    1.48 -      __ pop_i(SSR);
    1.49 -      __ srav(FSR, SSR, FSR);
    1.50 -      break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.51 -    case ushr :
    1.52 -      __ pop_i(SSR);
    1.53 -      __ srlv(FSR, SSR, FSR);
    1.54 -      break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.55 +    case add  : __ addu32(FSR, SSR, FSR); break;
    1.56 +    case sub  : __ subu32(FSR, SSR, FSR); break;
    1.57 +    case mul  : __ mul(FSR, SSR, FSR);    break;
    1.58 +    case _and : __ andr(FSR, SSR, FSR);   break;
    1.59 +    case _or  : __ orr(FSR, SSR, FSR);    break;
    1.60 +    case _xor : __ xorr(FSR, SSR, FSR);   break;
    1.61 +    case shl  : __ sllv(FSR, SSR, FSR);   break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.62 +    case shr  : __ srav(FSR, SSR, FSR);   break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.63 +    case ushr : __ srlv(FSR, SSR, FSR);   break; // implicit masking of lower 5 bits by Intel shift instr. mips also
    1.64      default   : ShouldNotReachHere();
    1.65    }
    1.66  }
    1.67 @@ -1328,21 +1301,11 @@
    1.68    }
    1.69  #endif
    1.70    switch (op) {
    1.71 -    case add :
    1.72 -      __ daddu(FSR, T2, FSR);
    1.73 -      break;
    1.74 -    case sub :
    1.75 -      __ dsubu(FSR, T2, FSR);
    1.76 -      break;
    1.77 -    case _and:
    1.78 -      __ andr(FSR, T2, FSR);
    1.79 -      break;
    1.80 -    case _or :
    1.81 -      __ orr(FSR, T2, FSR);
    1.82 -      break;
    1.83 -    case _xor:
    1.84 -      __ xorr(FSR, T2, FSR);
    1.85 -      break;
    1.86 +    case add : __ daddu(FSR, T2, FSR); break;
    1.87 +    case sub : __ dsubu(FSR, T2, FSR); break;
    1.88 +    case _and: __ andr(FSR, T2, FSR);  break;
    1.89 +    case _or : __ orr(FSR, T2, FSR);   break;
    1.90 +    case _xor: __ xorr(FSR, T2, FSR);  break;
    1.91      default : ShouldNotReachHere();
    1.92    }
    1.93  }

mercurial