2008-02-07 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / mini-s390.c
index f6475485c95ecf485c9935250ecd3cc905eb72b2..f28736237a73fad401bb9e4a0f604d69af0d9065 100644 (file)
@@ -2282,7 +2282,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (last_ins && (last_ins->opcode == OP_STOREI1_MEMBASE_REG) &&
                                        ins->inst_basereg == last_ins->inst_destbasereg &&
                                        ins->inst_offset == last_ins->inst_offset) {
-                               ins->opcode = (ins->opcode == OP_LOADI1_MEMBASE) ? CEE_CONV_I1 : CEE_CONV_U1;
+                               ins->opcode = (ins->opcode == OP_LOADI1_MEMBASE) ? OP_ICONV_TO_I1 : OP_ICONV_TO_U1;
                                ins->sreg1 = last_ins->sreg1;                           
                        }
                        break;
@@ -2291,12 +2291,10 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (last_ins && (last_ins->opcode == OP_STOREI2_MEMBASE_REG) &&
                                        ins->inst_basereg == last_ins->inst_destbasereg &&
                                        ins->inst_offset == last_ins->inst_offset) {
-                               ins->opcode = (ins->opcode == OP_LOADI2_MEMBASE) ? CEE_CONV_I2 : CEE_CONV_U2;
+                               ins->opcode = (ins->opcode == OP_LOADI2_MEMBASE) ? OP_ICONV_TO_I2 : OP_ICONV_TO_U2;
                                ins->sreg1 = last_ins->sreg1;                           
                        }
                        break;
-               case CEE_CONV_I4:
-               case CEE_CONV_U4:
                case OP_MOVE:
                        /* 
                         * OP_MOVE reg, reg 
@@ -2605,7 +2603,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_lr  (code, ins->dreg, s390_r0);
                }
                        break;
-               case CEE_CONV_I1: {
+               case OP_ICONV_TO_I1: {
                        s390_lhi  (code, s390_r0, 0x80);
                        if (ins->dreg != ins->sreg1) {
                                s390_lr   (code, ins->dreg, ins->sreg1);
@@ -2617,7 +2615,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_or   (code, ins->dreg, s390_r13);
                }
                        break;
-               case CEE_CONV_I2: {
+               case OP_ICONV_TO_I2: {
                        s390_lhi  (code, s390_r0, 0x80);
                        s390_sll  (code, s390_r0, 0, 8);
                        if (ins->dreg != ins->sreg1) {
@@ -2630,7 +2628,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_or   (code, ins->dreg, s390_r13);
                }
                        break;
-               case CEE_CONV_U1: {
+               case OP_ICONV_TO_U1: {
                        s390_lhi  (code, s390_r0, 0xff);
                        if (ins->dreg != ins->sreg1) {
                                s390_lr   (code, ins->dreg, ins->sreg1);
@@ -2638,7 +2636,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_nr   (code, ins->dreg, s390_r0);
                }
                        break;
-               case CEE_CONV_U2: {
+               case OP_ICONV_TO_U2: {
                        s390_lhi  (code, s390_r0, -1);
                        s390_sll  (code, s390_r0, 0, 16);
                        s390_srl  (code, s390_r0, 0, 16);
@@ -2651,8 +2649,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_COMPARE: {
                        next = mono_inst_list_next (&ins->node, &bb->ins_list);
                        if ((next) && 
-                           (((next->opcode >= CEE_BNE_UN) &&
-                             (next->opcode <= CEE_BLT_UN)) || 
+                           (((next->opcode >= OP_IBNE_UN) &&
+                             (next->opcode <= OP_IBLT_UN)) || 
                             ((next->opcode >= OP_COND_EXC_NE_UN) &&
                              (next->opcode <= OP_COND_EXC_LT_UN)) ||
                             ((next->opcode == OP_CLT_UN) ||
@@ -2667,8 +2665,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (s390_is_imm16 (ins->inst_imm)) {
                                s390_lhi  (code, s390_r0, ins->inst_imm);
                                if ((next) && 
-                                   (((next->opcode >= CEE_BNE_UN) &&
-                                     (next->opcode <= CEE_BLT_UN)) || 
+                                   (((next->opcode >= OP_IBNE_UN) &&
+                                     (next->opcode <= OP_IBLT_UN)) || 
                                     ((next->opcode >= OP_COND_EXC_NE_UN) &&
                                      (next->opcode <= OP_COND_EXC_LT_UN)) ||
                                     ((next->opcode == OP_CLT_UN) ||
@@ -2682,8 +2680,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                s390_j    (code, 4);
                                s390_word (code, ins->inst_imm);
                                if ((next) && 
-                                   (((next->opcode >= CEE_BNE_UN) &&
-                                     (next->opcode <= CEE_BLT_UN)) || 
+                                   (((next->opcode >= OP_IBNE_UN) &&
+                                     (next->opcode <= OP_IBLT_UN)) || 
                                     ((next->opcode >= OP_COND_EXC_NE_UN) &&
                                      (next->opcode <= OP_COND_EXC_LT_UN)) ||
                                     ((next->opcode == OP_CLT_UN) ||
@@ -2704,7 +2702,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_alr  (code, ins->dreg, src2);
                }
                        break;
-               case CEE_ADD: {
+               case OP_IADD: {
                        CHECK_SRCDST_COM;
                        s390_ar   (code, ins->dreg, src2);
                }
@@ -2783,13 +2781,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                }
                        break;
-               case CEE_ADD_OVF: {
+               case OP_IADD_OVF: {
                        CHECK_SRCDST_COM;
                        s390_ar   (code, ins->dreg, src2);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
                }
                        break;
-               case CEE_ADD_OVF_UN: {
+               case OP_IADD_OVF_UN: {
                        CHECK_SRCDST_COM;
                        s390_alr  (code, ins->dreg, src2);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_CY, "OverflowException");
@@ -2847,7 +2845,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_slr (code, ins->dreg, src2);
                }
                        break;
-               case CEE_SUB: {
+               case OP_ISUB: {
                        CHECK_SRCDST_NCOM;
                        s390_sr   (code, ins->dreg, src2);
                }
@@ -2907,13 +2905,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                }
                        break;
-               case CEE_SUB_OVF: {
+               case OP_ISUB_OVF: {
                        CHECK_SRCDST_NCOM;
                        s390_sr   (code, ins->dreg, src2);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_OV, "OverflowException");
                }
                        break;
-               case CEE_SUB_OVF_UN: {
+               case OP_ISUB_OVF_UN: {
                        CHECK_SRCDST_NCOM;
                        s390_slr  (code, ins->dreg, src2);
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, "OverflowException");
@@ -2968,7 +2966,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, "OverflowException");
                }
                        break;
-               case CEE_AND: {
+               case OP_IAND: {
                        if (ins->sreg1 == ins->dreg) {
                                s390_nr   (code, ins->dreg, ins->sreg2);
                        } 
@@ -3001,14 +2999,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                }
                        break;
-               case CEE_DIV: {
+               case OP_IDIV: {
                        s390_lr   (code, s390_r0, ins->sreg1);
                        s390_srda (code, s390_r0, 0, 32);
                        s390_dr   (code, s390_r0, ins->sreg2);
                        s390_lr   (code, ins->dreg, s390_r1);
                }
                        break;
-               case CEE_DIV_UN: {
+               case OP_IDIV_UN: {
                        s390_lr   (code, s390_r0, ins->sreg1);
                        s390_srdl (code, s390_r0, 0, 32);
                        s390_dlr  (code, s390_r0, ins->sreg2);
@@ -3031,13 +3029,13 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_lr   (code, ins->dreg, s390_r1);
                }
                        break;
-               case CEE_REM: {
+               case OP_IREM: {
                        s390_lr   (code, s390_r0, ins->sreg1);
                        s390_srda (code, s390_r0, 0, 32);
                        s390_dr   (code, s390_r0, ins->sreg2);
                        s390_lr   (code, ins->dreg, s390_r0);
                        break;
-               case CEE_REM_UN:
+               case OP_IREM_UN:
                        s390_lr   (code, s390_r0, ins->sreg1);
                        s390_srdl (code, s390_r0, 0, 32);
                        s390_dlr  (code, s390_r0, ins->sreg2);
@@ -3060,7 +3058,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_lr   (code, ins->dreg, s390_r0);
                }
                        break;
-               case CEE_OR: {
+               case OP_IOR: {
                        if (ins->sreg1 == ins->dreg) {
                                s390_or   (code, ins->dreg, ins->sreg2);
                        } 
@@ -3093,7 +3091,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                }
                        break;
-               case CEE_XOR: {
+               case OP_IXOR: {
                        if (ins->sreg1 == ins->dreg) {
                                s390_xr   (code, ins->dreg, ins->sreg2);
                        } 
@@ -3126,7 +3124,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                }
                        break;
-               case CEE_SHL: {
+               case OP_ISHL: {
                        CHECK_SRCDST_NCOM;
                        s390_sll  (code, ins->dreg, src2, 0);
                }
@@ -3138,7 +3136,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_sll  (code, ins->dreg, 0, (ins->inst_imm & 0x1f));
                }
                        break;
-               case CEE_SHR: {
+               case OP_ISHR: {
                        CHECK_SRCDST_NCOM;
                        s390_sra  (code, ins->dreg, src2, 0);
                }
@@ -3157,12 +3155,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_srl  (code, ins->dreg, 0, (ins->inst_imm & 0x1f));
                }
                        break;
-               case CEE_SHR_UN: {
+               case OP_ISHR_UN: {
                        CHECK_SRCDST_NCOM;
                        s390_srl  (code, ins->dreg, src2, 0);
                }
                        break;
-               case CEE_NOT: {
+               case OP_INOT: {
                        if (ins->sreg1 != ins->dreg) {
                                s390_lr   (code, ins->dreg, ins->sreg1);
                        }
@@ -3170,11 +3168,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_xr  (code, ins->dreg, s390_r0);
                }
                        break;
-               case CEE_NEG: {
+               case OP_INEG: {
                        s390_lcr (code, ins->dreg, ins->sreg1);
                }
                        break;
-               case CEE_MUL: {
+               case OP_IMUL: {
                        if (ins->sreg1 == ins->dreg) {
                                s390_msr  (code, ins->dreg, ins->sreg2);
                        } 
@@ -3207,7 +3205,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_msr  (code, ins->dreg, s390_r13);
                }
                        break;
-               case CEE_MUL_OVF: {
+               case OP_IMUL_OVF: {
                        short int *o[2];
                        s390_ltr  (code, s390_r1, ins->sreg1);
                        s390_jz   (code, 0); CODEPTR(code, o[0]);
@@ -3226,7 +3224,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_lr   (code, ins->dreg, s390_r1);
                }
                        break;
-               case CEE_MUL_OVF_UN: {
+               case OP_IMUL_OVF_UN: {
                        s390_lhi  (code, s390_r0, 0);
                        s390_lr   (code, s390_r1, ins->sreg1);
                        s390_mlr  (code, s390_r0, ins->sreg2);
@@ -3270,8 +3268,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_l    (code,ins->dreg, 0, s390_r13, 4);
                }
                        break;
-               case CEE_CONV_I4:
-               case CEE_CONV_U4:
+               case OP_ICONV_TO_I4:
+               case OP_ICONV_TO_U4:
                case OP_MOVE: {
                        if (ins->dreg != ins->sreg1) {
                                s390_lr (code, ins->dreg, ins->sreg1);
@@ -3612,26 +3610,26 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_COND_EXC_NC:
                        EMIT_COND_SYSTEM_EXCEPTION (S390_CC_NC, ins->inst_p1);
                        break;
-               case CEE_BEQ:
+               case OP_IBEQ:
                        EMIT_COND_BRANCH (ins, S390_CC_EQ);
                        break;  
-               case CEE_BNE_UN:
+               case OP_IBNE_UN:
                        EMIT_COND_BRANCH (ins, S390_CC_NE);
                        break;  
-               case CEE_BLT:
-               case CEE_BLT_UN:
+               case OP_IBLT:
+               case OP_IBLT_UN:
                        EMIT_COND_BRANCH (ins, S390_CC_LT);
                        break;  
-               case CEE_BGT:
-               case CEE_BGT_UN:
+               case OP_IBGT:
+               case OP_IBGT_UN:
                        EMIT_COND_BRANCH (ins, S390_CC_GT);
                        break;  
-               case CEE_BGE:
-               case CEE_BGE_UN:
+               case OP_IBGE:
+               case OP_IBGE_UN:
                        EMIT_COND_BRANCH (ins, S390_CC_GE);
                        break;  
-               case CEE_BLE:
-               case CEE_BLE_UN:
+               case OP_IBLE:
+               case OP_IBLE_UN:
                        EMIT_COND_BRANCH (ins, S390_CC_LE);
                        break;
 
@@ -3721,11 +3719,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        s390_adb   (code, ins->dreg, 0, s390_r13, 4);
                }
                        break;
-               case CEE_CONV_R4: {
+               case OP_ICONV_TO_R4: {
                        s390_cdfbr (code, ins->dreg, ins->sreg1);
                }
                        break;
-               case CEE_CONV_R8: {
+               case OP_ICONV_TO_R8: {
                        s390_cdfbr (code, ins->dreg, ins->sreg1);
                }
                        break;