Author: zoltan
Date: 2008-02-07 12:20:04 -0500 (Thu, 07 Feb 2008)
New Revision: 95157

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/cpu-x86.md
   trunk/mono/mono/mini/mini-x86.c
   trunk/mono/mono/mini/mini-x86.h
Log:
2008-02-07  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2008-02-07 17:09:09 UTC (rev 95156)
+++ trunk/mono/mono/mini/ChangeLog      2008-02-07 17:20:04 UTC (rev 95157)
@@ -1,5 +1,7 @@
 2008-02-07  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
+
        * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead 
make 
        arch specific functions for its parts. Call the peephole pass after 
local
        regalloc so the prolog can compute a more accurate max_offset.

Modified: trunk/mono/mono/mini/cpu-x86.md
===================================================================
--- trunk/mono/mono/mini/cpu-x86.md     2008-02-07 17:09:09 UTC (rev 95156)
+++ trunk/mono/mono/mini/cpu-x86.md     2008-02-07 17:20:04 UTC (rev 95157)
@@ -60,43 +60,44 @@
 jmp: len:32
 call: dest:a clob:c len:17
 br: len:5
-beq: len:6
-bge: len:6
-bgt: len:6
-ble: len:6
-blt: len:6
-bne.un: len:6
-bge.un: len:6
-bgt.un: len:6
-ble.un: len:6
-blt.un: len:6
+int_beq: len:6
+int_bge: len:6
+int_bgt: len:6
+int_ble: len:6
+int_blt: len:6
+int_bne_un: len:6
+int_bge_un: len:6
+int_bgt_un: len:6
+int_ble_un: len:6
+int_blt_un: len:6
 label: len:0
-add: dest:i src1:i src2:i len:2 clob:1
-sub: dest:i src1:i src2:i len:2 clob:1
-mul: dest:i src1:i src2:i len:3 clob:1
-div: dest:a src1:a src2:i len:15 clob:d
-div.un: dest:a src1:a src2:i len:15 clob:d
-rem: dest:d src1:a src2:i len:15 clob:a
-rem.un: dest:d src1:a src2:i len:15 clob:a
-and: dest:i src1:i src2:i len:2 clob:1
-or: dest:i src1:i src2:i len:2 clob:1
-xor: dest:i src1:i src2:i len:2 clob:1
-shl: dest:i src1:i src2:s clob:1 len:2
-shr: dest:i src1:i src2:s clob:1 len:2
-shr.un: dest:i src1:i src2:s clob:1 len:2
-neg: dest:i src1:i len:2 clob:1
-not: dest:i src1:i len:2 clob:1
-conv.i1: dest:i src1:y len:3
-conv.i2: dest:i src1:i len:3
-conv.i4: dest:i src1:i len:2
-conv.r4: dest:f src1:i len:7
-conv.r8: dest:f src1:i len:7
-conv.u4: dest:i src1:i
-conv.u2: dest:i src1:i len:3
-conv.u1: dest:i src1:y len:3
-conv.i: dest:i src1:i len:3
 
+int_add: dest:i src1:i src2:i len:2 clob:1
+int_sub: dest:i src1:i src2:i len:2 clob:1
+int_mul: dest:i src1:i src2:i len:3 clob:1
+int_div: dest:a src1:a src2:i len:15 clob:d
+int_div_un: dest:a src1:a src2:i len:15 clob:d
+int_rem: dest:d src1:a src2:i len:15 clob:a
+int_rem_un: dest:d src1:a src2:i len:15 clob:a
+int_and: dest:i src1:i src2:i len:2 clob:1
+int_or: dest:i src1:i src2:i len:2 clob:1
 int_xor: dest:i src1:i src2:i len:2 clob:1
+int_shl: dest:i src1:i src2:s clob:1 len:2
+int_shr: dest:i src1:i src2:s clob:1 len:2
+int_shr_un: dest:i src1:i src2:s clob:1 len:2
+int_neg: dest:i src1:i len:2 clob:1
+int_not: dest:i src1:i len:2 clob:1
+int_conv_to_i1: dest:i src1:y len:3
+int_conv_to_i2: dest:i src1:i len:3
+int_conv_to_i4: dest:i src1:i len:2
+int_conv_to_r4: dest:f src1:i len:7
+int_conv_to_r8: dest:f src1:i len:7
+int_conv_to_u4: dest:i src1:i
+int_conv_to_u2: dest:i src1:i len:3
+int_conv_to_u1: dest:i src1:y len:3
+int_conv_to_i: dest:i src1:i len:3
+int_mul_ovf: dest:i src1:i src2:i clob:1 len:9
+int_mul_ovf_un: dest:i src1:i src2:i len:16
 
 throw: src1:i len:13
 rethrow: src1:i len:13
@@ -105,10 +106,6 @@
 endfilter: src1:a len:16
 
 ckfinite: dest:f src1:f len:32
-mul.ovf: dest:i src1:i src2:i clob:1 len:9
-# this opcode is handled specially in the code generator
-mul.ovf.un: dest:i src1:i src2:i len:16
-conv.u: dest:i src1:i len:3
 ceq: dest:y len:6
 cgt: dest:y len:6
 cgt.un: dest:y len:6

Modified: trunk/mono/mono/mini/mini-x86.c
===================================================================
--- trunk/mono/mono/mini/mini-x86.c     2008-02-07 17:09:09 UTC (rev 95156)
+++ trunk/mono/mono/mini/mini-x86.c     2008-02-07 17:20:04 UTC (rev 95157)
@@ -1479,7 +1479,7 @@
                                (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;
@@ -1495,12 +1495,10 @@
                        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_ICONV_TO_I4:
                case OP_MOVE:
                        /*
@@ -1696,7 +1694,7 @@
                                (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;
@@ -1712,12 +1710,10 @@
                        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_ICONV_TO_I4:
                case OP_MOVE:
                        /*
@@ -2188,18 +2184,18 @@
                case OP_LOADI2_MEMBASE:
                        x86_widen_membase (code, ins->dreg, ins->inst_basereg, 
ins->inst_offset, TRUE, TRUE);
                        break;
-               case CEE_CONV_I1:
+               case OP_ICONV_TO_I1:
                case OP_SEXT_I1:
                        x86_widen_reg (code, ins->dreg, ins->sreg1, TRUE, 
FALSE);
                        break;
-               case CEE_CONV_I2:
+               case OP_ICONV_TO_I2:
                case OP_SEXT_I2:
                        x86_widen_reg (code, ins->dreg, ins->sreg1, TRUE, TRUE);
                        break;
-               case CEE_CONV_U1:
+               case OP_ICONV_TO_U1:
                        x86_widen_reg (code, ins->dreg, ins->sreg1, FALSE, 
FALSE);
                        break;
-               case CEE_CONV_U2:
+               case OP_ICONV_TO_U2:
                        x86_widen_reg (code, ins->dreg, ins->sreg1, FALSE, 
TRUE);
                        break;
                case OP_COMPARE:
@@ -2266,7 +2262,7 @@
                        x86_breakpoint (code);
                        break;
                case OP_ADDCC:
-               case CEE_ADD:
+               case OP_IADD:
                        x86_alu_reg_reg (code, X86_ADD, ins->sreg1, ins->sreg2);
                        break;
                case OP_ADC:
@@ -2280,7 +2276,7 @@
                        x86_alu_reg_imm (code, X86_ADC, ins->dreg, 
ins->inst_imm);
                        break;
                case OP_SUBCC:
-               case CEE_SUB:
+               case OP_ISUB:
                        x86_alu_reg_reg (code, X86_SUB, ins->sreg1, ins->sreg2);
                        break;
                case OP_SBB:
@@ -2293,14 +2289,14 @@
                case OP_SBB_IMM:
                        x86_alu_reg_imm (code, X86_SBB, ins->dreg, 
ins->inst_imm);
                        break;
-               case CEE_AND:
+               case OP_IAND:
                        x86_alu_reg_reg (code, X86_AND, ins->sreg1, ins->sreg2);
                        break;
                case OP_AND_IMM:
                        x86_alu_reg_imm (code, X86_AND, ins->sreg1, 
ins->inst_imm);
                        break;
-               case CEE_DIV:
-               case CEE_REM:
+               case OP_IDIV:
+               case OP_IREM:
                        /* 
                         * The code is the same for div/rem, the allocator will 
allocate dreg
                         * to RAX/RDX as appropriate.
@@ -2316,8 +2312,8 @@
                                x86_div_reg (code, ins->sreg2, TRUE);
                        }
                        break;
-               case CEE_DIV_UN:
-               case CEE_REM_UN:
+               case OP_IDIV_UN:
+               case OP_IREM_UN:
                        if (ins->sreg2 == X86_EDX) {
                                x86_push_reg (code, ins->sreg2);
                                x86_alu_reg_reg (code, X86_XOR, X86_EDX, 
X86_EDX);
@@ -2338,24 +2334,23 @@
                        x86_cdq (code);
                        x86_div_reg (code, ins->sreg2, TRUE);
                        break;
-               case CEE_OR:
+               case OP_IOR:
                        x86_alu_reg_reg (code, X86_OR, ins->sreg1, ins->sreg2);
                        break;
                case OP_OR_IMM:
                        x86_alu_reg_imm (code, X86_OR, ins->sreg1, 
ins->inst_imm);
                        break;
-               case CEE_XOR:
                case OP_IXOR:
                        x86_alu_reg_reg (code, X86_XOR, ins->sreg1, ins->sreg2);
                        break;
                case OP_XOR_IMM:
                        x86_alu_reg_imm (code, X86_XOR, ins->sreg1, 
ins->inst_imm);
                        break;
-               case CEE_SHL:
+               case OP_ISHL:
                        g_assert (ins->sreg2 == X86_ECX);
                        x86_shift_reg (code, X86_SHL, ins->dreg);
                        break;
-               case CEE_SHR:
+               case OP_ISHR:
                        g_assert (ins->sreg2 == X86_ECX);
                        x86_shift_reg (code, X86_SAR, ins->dreg);
                        break;
@@ -2365,7 +2360,7 @@
                case OP_SHR_UN_IMM:
                        x86_shift_reg_imm (code, X86_SHR, ins->dreg, 
ins->inst_imm);
                        break;
-               case CEE_SHR_UN:
+               case OP_ISHR_UN:
                        g_assert (ins->sreg2 == X86_ECX);
                        x86_shift_reg (code, X86_SHR, ins->dreg);
                        break;
@@ -2453,14 +2448,14 @@
                                x86_shift_reg_imm (code, X86_SHR, 
ins->backend.reg3, ins->inst_imm);
                        }
                        break;
-               case CEE_NOT:
+               case OP_INOT:
                        x86_not_reg (code, ins->sreg1);
                        break;
-               case CEE_NEG:
+               case OP_INEG:
                        x86_neg_reg (code, ins->sreg1);
                        break;
 
-               case CEE_MUL:
+               case OP_IMUL:
                        x86_imul_reg_reg (code, ins->sreg1, ins->sreg2);
                        break;
                case OP_MUL_IMM:
@@ -2521,11 +2516,11 @@
                                break;
                        }
                        break;
-               case CEE_MUL_OVF:
+               case OP_IMUL_OVF:
                        x86_imul_reg_reg (code, ins->sreg1, ins->sreg2);
                        EMIT_COND_SYSTEM_EXCEPTION (X86_CC_O, FALSE, 
"OverflowException");
                        break;
-               case CEE_MUL_OVF_UN: {
+               case OP_IMUL_OVF_UN: {
                        /* the mul operation and the exception check should 
most likely be split */
                        int non_eax_reg, saved_eax = FALSE, saved_edx = FALSE;
                        /*g_assert (ins->sreg2 == X86_EAX);
@@ -2589,12 +2584,9 @@
                        mono_add_patch_info (cfg, offset, 
(MonoJumpInfoType)ins->inst_right->inst_i1, ins->inst_right->inst_p0);
                        x86_push_membase (code, ins->inst_basereg, 0xf0f0f0f0);
                        break;
-               case CEE_CONV_I4:
                case OP_MOVE:
                        x86_mov_reg_reg (code, ins->dreg, ins->sreg1, 4);
                        break;
-               case CEE_CONV_U4:
-                       g_assert_not_reached ();
                case OP_JMP: {
                        /*
                         * Note: this 'frame destruction' logic is useful for 
tail calls, too.
@@ -2858,16 +2850,16 @@
                case OP_COND_EXC_NC:
                        EMIT_COND_SYSTEM_EXCEPTION (branch_cc_table 
[ins->opcode - OP_COND_EXC_EQ], (ins->opcode < OP_COND_EXC_NE_UN), 
ins->inst_p1);
                        break;
-               case CEE_BEQ:
-               case CEE_BNE_UN:
-               case CEE_BLT:
-               case CEE_BLT_UN:
-               case CEE_BGT:
-               case CEE_BGT_UN:
-               case CEE_BGE:
-               case CEE_BGE_UN:
-               case CEE_BLE:
-               case CEE_BLE_UN:
+               case OP_IBEQ:
+               case OP_IBNE_UN:
+               case OP_IBLT:
+               case OP_IBLT_UN:
+               case OP_IBGT:
+               case OP_IBGT_UN:
+               case OP_IBGE:
+               case OP_IBGE_UN:
+               case OP_IBLE:
+               case OP_IBLE_UN:
                        EMIT_COND_BRANCH (ins, cc_table [mono_opcode_to_cond 
(ins->opcode)], cc_signed_table [mono_opcode_to_cond (ins->opcode)]);
                        break;
 
@@ -2931,8 +2923,8 @@
                case OP_LOADR4_MEMBASE:
                        x86_fld_membase (code, ins->inst_basereg, 
ins->inst_offset, FALSE);
                        break;
-               case CEE_CONV_R4: /* FIXME: change precision */
-               case CEE_CONV_R8:
+               case OP_ICONV_TO_R4: /* FIXME: change precision */
+               case OP_ICONV_TO_R8:
                        x86_push_reg (code, ins->sreg1);
                        x86_fild_membase (code, X86_ESP, 0, FALSE);
                        x86_alu_reg_imm (code, X86_ADD, X86_ESP, 4);

Modified: trunk/mono/mono/mini/mini-x86.h
===================================================================
--- trunk/mono/mono/mini/mini-x86.h     2008-02-07 17:09:09 UTC (rev 95156)
+++ trunk/mono/mono/mini/mini-x86.h     2008-02-07 17:20:04 UTC (rev 95157)
@@ -277,6 +277,7 @@
 #define MONO_ARCH_IMT_REG X86_EDX
 #define MONO_ARCH_VTABLE_REG X86_EDX
 #define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1
+#define MONO_ARCH_ENABLE_NORMALIZE_OPCODES 1
 
 #if !defined(__APPLE__)
 #define MONO_ARCH_AOT_SUPPORTED 1

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to