src/cpu/mips/vm/mips_64.ad

changeset 422
8b711b193083
parent 420
ac094d2819c2
child 426
a7aab745eaa6
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Wed Jul 26 15:19:03 2017 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Thu Aug 03 14:05:50 2017 +0800
     1.3 @@ -5554,55 +5554,6 @@
     1.4    %}
     1.5  %}
     1.6  
     1.7 -/*
     1.8 -// Comparison Code, unsigned compare.  Used by FP also, with
     1.9 -// C2 (unordered) turned into GT or LT already.  The other bits
    1.10 -// C0 and C3 are turned into Carry & Zero flags.
    1.11 -operand cmpOpU() %{
    1.12 -  match(Bool);
    1.13 -
    1.14 -  format %{ "" %}
    1.15 -  interface(COND_INTER) %{
    1.16 -    equal(0x4);
    1.17 -    not_equal(0x5);
    1.18 -    less(0x2);
    1.19 -    greater_equal(0x3);
    1.20 -    less_equal(0x6);
    1.21 -    greater(0x7);
    1.22 -  %}
    1.23 -%}
    1.24 -*/
    1.25 -/*
    1.26 -// Comparison Code for FP conditional move
    1.27 -operand cmpOp_fcmov() %{
    1.28 -  match(Bool);
    1.29 -
    1.30 -  format %{ "" %}
    1.31 -  interface(COND_INTER) %{
    1.32 -    equal        (0x01);
    1.33 -    not_equal    (0x02);
    1.34 -    greater      (0x03);
    1.35 -    greater_equal(0x04);
    1.36 -    less         (0x05);
    1.37 -    less_equal   (0x06);
    1.38 -  %}
    1.39 -%}
    1.40 -
    1.41 -// Comparision Code used in long compares
    1.42 -operand cmpOp_commute() %{
    1.43 -  match(Bool);
    1.44 -
    1.45 -  format %{ "" %}
    1.46 -  interface(COND_INTER) %{
    1.47 -    equal(0x4);
    1.48 -    not_equal(0x5);
    1.49 -    less(0xF);
    1.50 -    greater_equal(0xE);
    1.51 -    less_equal(0xD);
    1.52 -    greater(0xC);
    1.53 -  %}
    1.54 -%}
    1.55 -*/
    1.56  
    1.57  //----------Special Memory Operands--------------------------------------------
    1.58  // Stack Slot Operand - This operand is used for loading and storing temporary
    1.59 @@ -6791,36 +6742,6 @@
    1.60  	else
    1.61          	__ bne(op1, op2, (int)0); 
    1.62          break;
    1.63 -/*
    1.64 -      case 0x03: //above
    1.65 -        __ sltu(AT, op2, op1);
    1.66 -        if(&L)
    1.67 -        	__ bne(R0, AT, L); 
    1.68 -        else
    1.69 -                __ bne(R0, AT, (int)0);
    1.70 -        break;
    1.71 -      case 0x04: //above_equal
    1.72 -        __ sltu(AT, op1, op2);
    1.73 -        if(&L)
    1.74 -       	        __ beq(AT, R0, L);
    1.75 -        else
    1.76 -       	        __ beq(AT, R0, (int)0);
    1.77 -        break;
    1.78 -      case 0x05: //below
    1.79 -        __ sltu(AT, op1, op2);
    1.80 -        if(&L)
    1.81 -      		 __ bne(R0, AT, L); 
    1.82 -        else
    1.83 -        	 __ bne(R0, AT, (int)0);
    1.84 -        break;
    1.85 -      case 0x06: //below_equal
    1.86 -        __ sltu(AT, op2, op1);
    1.87 -        if(&L)
    1.88 -        	__ beq(AT, R0, L);
    1.89 -        else
    1.90 -        	__ beq(AT, R0, (int)0);
    1.91 -       break;
    1.92 -*/
    1.93        default:
    1.94            Unimplemented();
    1.95      }  
    1.96 @@ -7561,128 +7482,6 @@
    1.97    ins_pipe( pipe_alu_branch );
    1.98  %}
    1.99  
   1.100 -instruct branchConL_reg_immL16_sub(cmpOp cmp, mRegL src1, immL16_sub src2, label labl) %{
   1.101 -  match( If cmp (CmpL src1 src2) );
   1.102 -  effect(USE labl);
   1.103 -  ins_cost(180);
   1.104 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_reg_immL16_sub" %}
   1.105 -
   1.106 -  ins_encode %{
   1.107 -    Register op1 = $src1$$Register;
   1.108 -    int      val = $src2$$constant;
   1.109 -    Label     &L =  *($labl$$label);
   1.110 -    int     flag = $cmp$$cmpcode;
   1.111 -
   1.112 -    __ daddiu(AT, op1, -1 * val);
   1.113 -    switch(flag)
   1.114 -    {
   1.115 -      case 0x01: //equal
   1.116 -       if (&L)
   1.117 -               __ beq(R0, AT, L); 
   1.118 -       else 
   1.119 -               __ beq(R0, AT, (int)0); 
   1.120 -        break;
   1.121 -      case 0x02: //not_equal
   1.122 -       if (&L)
   1.123 -               __ bne(R0, AT, L); 
   1.124 -       else
   1.125 -               __ bne(R0, AT, (int)0); 
   1.126 -        break;
   1.127 -      case 0x03: //greater
   1.128 -        if(&L)
   1.129 -               __ bgtz(AT, L); 
   1.130 -        else
   1.131 -                __ bgtz(AT, (int)0);
   1.132 -        break;
   1.133 -      case 0x04: //greater_equal
   1.134 -        if(&L)
   1.135 -               __ bgez(AT, L);
   1.136 -        else
   1.137 -                __ bgez(AT, (int)0);
   1.138 -        break;
   1.139 -      case 0x05: //less
   1.140 -        if(&L)
   1.141 -                __ bltz(AT, L); 
   1.142 -        else
   1.143 -                __ bltz(AT, (int)0);
   1.144 -        break;
   1.145 -      case 0x06: //less_equal
   1.146 -        if(&L)
   1.147 -               __ blez(AT, L);
   1.148 -        else
   1.149 -               __ blez(AT, (int)0);
   1.150 -       break;
   1.151 -      default:
   1.152 -          Unimplemented();
   1.153 -    }  
   1.154 -    __ nop();
   1.155 -  %}
   1.156 -
   1.157 -  ins_pc_relative(1);
   1.158 -  ins_pipe( pipe_alu_branch );
   1.159 -%}
   1.160 -
   1.161 -
   1.162 -instruct branchConI_reg_imm16_sub(cmpOp cmp, mRegI src1, immI16_sub src2, label labl) %{
   1.163 -  match( If cmp (CmpI src1 src2) );
   1.164 -  effect(USE labl);
   1.165 -  ins_cost(180);
   1.166 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm16_sub" %}
   1.167 -
   1.168 -  ins_encode %{
   1.169 -    Register op1 = $src1$$Register;
   1.170 -    int      val = $src2$$constant;
   1.171 -    Label     &L =  *($labl$$label);
   1.172 -    int     flag = $cmp$$cmpcode;
   1.173 -
   1.174 -    __ addiu32(AT, op1, -1 * val);
   1.175 -    switch(flag)
   1.176 -    {
   1.177 -      case 0x01: //equal
   1.178 -       if (&L)
   1.179 -               __ beq(R0, AT, L); 
   1.180 -       else 
   1.181 -               __ beq(R0, AT, (int)0); 
   1.182 -        break;
   1.183 -      case 0x02: //not_equal
   1.184 -       if (&L)
   1.185 -               __ bne(R0, AT, L); 
   1.186 -       else
   1.187 -               __ bne(R0, AT, (int)0); 
   1.188 -        break;
   1.189 -      case 0x03: //greater
   1.190 -        if(&L)
   1.191 -               __ bgtz(AT, L); 
   1.192 -        else
   1.193 -                __ bgtz(AT, (int)0);
   1.194 -        break;
   1.195 -      case 0x04: //greater_equal
   1.196 -        if(&L)
   1.197 -               __ bgez(AT, L);
   1.198 -        else
   1.199 -                __ bgez(AT, (int)0);
   1.200 -        break;
   1.201 -      case 0x05: //less
   1.202 -        if(&L)
   1.203 -                __ bltz(AT, L); 
   1.204 -        else
   1.205 -                __ bltz(AT, (int)0);
   1.206 -        break;
   1.207 -      case 0x06: //less_equal
   1.208 -        if(&L)
   1.209 -               __ blez(AT, L);
   1.210 -        else
   1.211 -               __ blez(AT, (int)0);
   1.212 -       break;
   1.213 -      default:
   1.214 -          Unimplemented();
   1.215 -    }  
   1.216 -    __ nop();
   1.217 -  %}
   1.218 -
   1.219 -  ins_pc_relative(1);
   1.220 -  ins_pipe( pipe_alu_branch );
   1.221 -%}
   1.222  
   1.223  instruct branchConL_regL_immL0(cmpOp cmp, mRegL src1, immL0 zero, label labl) %{
   1.224    match( If cmp (CmpL src1 zero) );
   1.225 @@ -12883,96 +12682,6 @@
   1.226  %}
   1.227  
   1.228  
   1.229 - instruct  jmpLoopEnd_reg_imm16_sub(cmpOp cop, mRegI src1, immI16_sub src2, label labl) %{
   1.230 -  match(CountedLoopEnd cop (CmpI src1 src2));
   1.231 -  effect(USE labl);
   1.232 -  
   1.233 -  ins_cost(250);
   1.234 -  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_reg_imm16_sub" %}
   1.235 -  ins_encode %{
   1.236 -    Register op1 = $src1$$Register;
   1.237 -    int      op2 = $src2$$constant;
   1.238 -    Label     &L = *($labl$$label);
   1.239 -    int     flag = $cop$$cmpcode;
   1.240 -
   1.241 -    __ addiu32(AT, op1, -1 * op2);
   1.242 -
   1.243 -    switch(flag)
   1.244 -    {
   1.245 -      case 0x01: //equal
   1.246 -       if (&L)
   1.247 -               __ beq(AT, R0, L); 
   1.248 -       else 
   1.249 -               __ beq(AT, R0, (int)0); 
   1.250 -        break;
   1.251 -      case 0x02: //not_equal
   1.252 -       if (&L)
   1.253 -               __ bne(AT, R0, L); 
   1.254 -       else
   1.255 -               __ bne(AT, R0, (int)0); 
   1.256 -        break;
   1.257 -      case 0x03: //above
   1.258 -        if(&L)
   1.259 -               __ bgtz(AT, L); 
   1.260 -        else
   1.261 -                __ bgtz(AT, (int)0);
   1.262 -        break;
   1.263 -      case 0x04: //above_equal
   1.264 -        if(&L)
   1.265 -               __ bgez(AT, L);
   1.266 -        else
   1.267 -                __ bgez(AT,(int)0);
   1.268 -        break;
   1.269 -      case 0x05: //below
   1.270 -        if(&L)
   1.271 -                __ bltz(AT, L); 
   1.272 -        else
   1.273 -                __ bltz(AT, (int)0);
   1.274 -        break;
   1.275 -      case 0x06: //below_equal
   1.276 -        if(&L)
   1.277 -               __ blez(AT, L);
   1.278 -        else
   1.279 -               __ blez(AT, (int)0);
   1.280 -       break;
   1.281 -      default:
   1.282 -          Unimplemented();
   1.283 -    }  
   1.284 -    __ nop();
   1.285 -  %}
   1.286 -  ins_pipe( pipe_jump );
   1.287 -  ins_pc_relative(1);
   1.288 -%}
   1.289 - 
   1.290 -          
   1.291 -/*  
   1.292 -// Jump Direct Conditional - Label defines a relative address from Jcc+1
   1.293 -instruct jmpLoopEndU(cmpOpU cop, eFlagsRegU cmp, label labl) %{
   1.294 -  match(CountedLoopEnd cop cmp);
   1.295 -  effect(USE labl);
   1.296 -
   1.297 -  ins_cost(300);
   1.298 -  format %{ "J$cop,u  $labl\t# Loop end" %}
   1.299 -  size(6);
   1.300 -  opcode(0x0F, 0x80);
   1.301 -  ins_encode( Jcc( cop, labl) );
   1.302 -  ins_pipe( pipe_jump );
   1.303 -  ins_pc_relative(1);
   1.304 -%}
   1.305 -
   1.306 -instruct jmpLoopEndUCF(cmpOpUCF cop, eFlagsRegUCF cmp, label labl) %{
   1.307 -  match(CountedLoopEnd cop cmp);
   1.308 -  effect(USE labl);
   1.309 -  
   1.310 -  ins_cost(200);
   1.311 -  format %{ "J$cop,u  $labl\t# Loop end" %}
   1.312 -  opcode(0x0F, 0x80);
   1.313 -  ins_encode( Jcc( cop, labl) );
   1.314 -  ins_pipe( pipe_jump );
   1.315 -  ins_pc_relative(1);
   1.316 -%}
   1.317 -*/
   1.318 -
   1.319  // This match pattern is created for StoreIConditional since I cannot match IfNode without a RegFlags! fujie 2012/07/17
   1.320  instruct jmpCon_flags(cmpOp cop, FlagsReg cr, label labl) %{
   1.321    match(If cop cr);

mercurial